@naturalcycles/db-lib
Version:
Lowest Common Denominator API to supported Databases
30 lines (29 loc) • 1.29 kB
JavaScript
import { anySchema, arraySchema, booleanSchema, integerSchema, Joi, objectSchema, stringSchema, } from '@naturalcycles/nodejs-lib/joi';
import { dbQueryFilterOperatorValues } from '../query/dbQuery.js';
export const commonDBOptionsSchema = objectSchema({
['onlyCache']: booleanSchema.optional(),
['skipCache']: booleanSchema.optional(),
});
export const commonDBSaveOptionsSchema = objectSchema({
excludeFromIndexes: arraySchema(stringSchema).optional(),
}).concat(commonDBOptionsSchema);
export const dbQueryFilterOperatorSchema = Joi.string().valid(...dbQueryFilterOperatorValues);
export const dbQueryFilterSchema = objectSchema({
name: stringSchema,
op: dbQueryFilterOperatorSchema,
val: anySchema,
});
export const dbQueryOrderSchema = objectSchema({
name: stringSchema,
descending: booleanSchema.optional(),
});
export const dbQuerySchema = objectSchema({
table: stringSchema,
_filters: arraySchema(dbQueryFilterSchema).optional(),
_limitValue: integerSchema.min(0).optional(),
_offsetValue: integerSchema.min(0).optional(),
_orders: arraySchema(dbQueryOrderSchema).optional(),
_startCursor: stringSchema.optional(),
_endCursor: stringSchema.optional(),
_selectedFieldNames: arraySchema(stringSchema).optional(),
});