{"version":3,"sources":["../../../src/dbs/pipes.ts"],"sourcesContent":["import { type ConditionalObjectKeys, type Pipe, type PipeInput, type PipeOutput, v } from 'valleyed'\n\nimport { Instance } from '../instance'\n\nexport enum QueryKeys {\n\tand = 'and',\n\tor = 'or',\n}\n\nexport enum Conditions {\n\tlt = 'lt',\n\tlte = 'lte',\n\tgt = 'gt',\n\tgte = 'gte',\n\teq = 'eq',\n\tne = 'ne',\n\tin = 'in',\n\tnin = 'nin',\n\texists = 'exists',\n}\n\nconst queryKeys = v.catch(v.defaults(v.in([QueryKeys.and, QueryKeys.or]), QueryKeys.and), QueryKeys.and)\nconst queryWhere = v.object({\n\tfield: v.string(),\n\tvalue: v.any(),\n\tcondition: v.catch(v.defaults(v.in(Object.values(Conditions)), Conditions.eq), Conditions.eq),\n})\nconst queryWhereBlock = v.recursive(\n\t() =>\n\t\tv.discriminate((d) => (Object.values(QueryKeys).includes(d.condition as any) ? 'block' : 'regular'), {\n\t\t\tblock: v.object({\n\t\t\t\tcondition: queryKeys,\n\t\t\t\tvalue: v.array(queryWhereBlock),\n\t\t\t}),\n\t\t\tregular: queryWhere,\n\t\t}),\n\t'QueryWhereBlock',\n) as Pipe<\n\t| {\n\t\t\tcondition: PipeInput<typeof queryKeys>\n\t\t\tvalue: PipeInput<typeof queryWhere>[]\n\t  }\n\t| PipeInput<typeof queryWhere>,\n\t| {\n\t\t\tcondition: PipeOutput<typeof queryKeys>\n\t\t\tvalue: PipeOutput<typeof queryWhere>[]\n\t  }\n\t| PipeOutput<typeof queryWhere>\n>\n\nconst queryWhereClause = v.defaults(v.array(queryWhereBlock), [])\n\nexport function queryParamsPipe() {\n\treturn v.meta(\n\t\tv\n\t\t\t.object({\n\t\t\t\tall: v.defaults(v.boolean(), false),\n\t\t\t\tlimit: v.lazy(() => {\n\t\t\t\t\tconst pagLimit = Instance.get().settings.utils.paginationDefaultLimit\n\t\t\t\t\treturn v.catch(v.defaults(v.number().pipe(v.lte(pagLimit)), pagLimit), pagLimit)\n\t\t\t\t}),\n\t\t\t\tpage: v.catch(v.defaults(v.number().pipe(v.gte(1)), 1), 1),\n\t\t\t\tsearch: v.defaults(\n\t\t\t\t\tv.nullish(\n\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\tvalue: v.string(),\n\t\t\t\t\t\t\tfields: v.array(v.string()),\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t\tnull,\n\t\t\t\t),\n\t\t\t\tsort: v.defaults(\n\t\t\t\t\tv.array(\n\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\tfield: v.string(),\n\t\t\t\t\t\t\tdesc: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t\t[],\n\t\t\t\t),\n\t\t\t\twhereType: queryKeys,\n\t\t\t\twhere: queryWhereClause,\n\t\t\t})\n\t\t\t.pipe((p) => ({ ...p, auth: <(typeof p)['where']>[], authType: QueryKeys.and })),\n\t\t{ title: 'Query Params', $refId: 'QueryParams' },\n\t)\n}\n\nexport function queryResultsPipe<T>(model: Pipe<any, T>) {\n\treturn v.object({\n\t\tpages: v.object({\n\t\t\tcurrent: v.number(),\n\t\t\tstart: v.number(),\n\t\t\tlast: v.number(),\n\t\t\tprevious: v.nullable(v.number()),\n\t\t\tnext: v.nullable(v.number()),\n\t\t}),\n\t\tdocs: v.object({\n\t\t\tlimit: v.number(),\n\t\t\ttotal: v.number(),\n\t\t\tcount: v.number(),\n\t\t}),\n\t\tresults: v.array(model),\n\t})\n}\n\nexport function wrapQueryParams(params: QueryParamsInput): QueryParams {\n\treturn v.assert(queryParamsPipe(), params)\n}\n\nexport type QueryParams = PipeOutput<ReturnType<typeof queryParamsPipe>>\nexport type QueryParamsInput = ConditionalObjectKeys<PipeInput<ReturnType<typeof queryParamsPipe>>>\nexport type QueryWhereClause = QueryParams['where'][number]\nexport type QueryWhere = Extract<QueryWhereClause, { field: string }>\nexport type QueryWhereBlock = Exclude<QueryWhereClause, { field: string }>\nexport type QueryResults<T> = PipeOutput<ReturnType<typeof queryResultsPipe<T>>>\n\nexport const mongoDbConfigPipe = () =>\n\tv.meta(\n\t\tv.object({\n\t\t\turi: v.string(),\n\t\t}),\n\t\t{ title: 'Mongodb Config', $refId: 'MongodbConfig' },\n\t)\n\nexport type MongoDbConfig = PipeOutput<ReturnType<typeof mongoDbConfigPipe>>\n"],"mappings":"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","names":["QueryKeys","Conditions"]}