{"version":3,"sources":["../../src/dbs/adapters/base/db.ts","../../src/dbs/adapters/base/types.ts","../../src/dbs/pipes.ts"],"sourcesContent":["import * as core from './core'\nimport type { DbConfig } from './types'\nimport { Instance } from '../../../instance'\n\nexport type TableOptions = { skipAudit?: boolean }\n\nexport abstract class Db<IdKey extends core.IdType> {\n\tconstructor(protected config: DbConfig) {}\n\n\tprotected getScopedDb(db: string) {\n\t\treturn Instance.get().getScopedName(db).replaceAll('.', '-')\n\t}\n\n\tabstract use<Model extends core.Model<IdKey>, Entity extends core.Entity>(\n\t\tconfig: core.Config<Model, Entity>,\n\t): core.Table<IdKey, Model, Entity>\n\n\tabstract session<T>(callback: () => Promise<T>): Promise<T>\n}\n","import { v, type PipeOutput } from 'valleyed'\n\nimport { KafkaEventBus } from '../../../events/adapters/kafka'\n\nexport const dbChangeConfigPipe = () =>\n\tv.object({\n\t\tdebeziumUrl: v.string(),\n\t\teventBus: v.instanceOf(KafkaEventBus as unknown as abstract new (...args: any[]) => KafkaEventBus),\n\t})\n\nexport type DbChangeConfig = PipeOutput<ReturnType<typeof dbChangeConfigPipe>>\n\nexport type DbConfig = {\n\tchanges?: DbChangeConfig\n}\n","import { type ConditionalObjectKeys, type Pipe, type PipeInput, type PipeOutput, v } from 'valleyed'\n\nimport { Instance } from '../instance'\nimport type { Select } from './adapters/base/core'\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}\n\n// eslint-disable-next-line promise/valid-params -- valleyed v.catch(schema, fallback) is not Promise.prototype.catch\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\t// eslint-disable-next-line promise/valid-params -- valleyed v.catch(schema, fallback) is not Promise.prototype.catch\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\t// eslint-disable-next-line promise/valid-params -- valleyed v.catch(schema, fallback) is not Promise.prototype.catch\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\t// eslint-disable-next-line promise/valid-params -- valleyed v.catch(schema, fallback) is not Promise.prototype.catch\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\tselect: v.optional(v.array(v.string())),\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): QueryParamsBase {\n\treturn v.assert(queryParamsPipe(), params)\n}\n\nexport type QueryParamsBase = PipeOutput<ReturnType<typeof queryParamsPipe>>\nexport type QueryParams<T, S extends Select<T> | undefined = undefined> = Omit<QueryParamsBase, 'select'> & {\n\tselect?: S extends undefined ? QueryParamsBase['select'] : S\n}\nexport type QueryParamsInput = ConditionalObjectKeys<PipeInput<ReturnType<typeof queryParamsPipe>>>\nexport type QueryWhereClause = QueryParamsBase['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"],"mappings":"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","names":["v","QueryKeys","Conditions","v"]}