UNPKG

@naturalcycles/db-lib

Version:

Lowest Common Denominator API to supported Databases

30 lines (29 loc) 1.29 kB
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(), });