{"version":3,"sources":["../../../../src/dbs/mongo/db.ts","/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/db.cjs"],"names":[],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/db.cjs","sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport {\n\tClientSession,\n\tCollection,\n\ttype CollectionInfo,\n\tMongoClient,\n\tObjectId,\n\ttype OptionalUnlessRequiredId,\n\ttype SortDirection,\n\ttype WithId,\n} from 'mongodb'\n\nimport { EquippedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport * as core from '../base/core'\nimport { Db } from '../base/db'\nimport type { DbConfig } from '../base/types'\nimport type { MongoDbConfig, QueryParams } from '../pipes'\nimport { MongoDbChange } from './changes'\nimport { parseMongodbQueryParams } from './query'\n\nconst idKey = '_id'\ntype IdType = { _id: string }\n\nconst sessionStore = new AsyncLocalStorage<ClientSession | undefined>(undefined)\n\nexport class MongoDb extends Db<{ _id: string }> {\n\tclient: MongoClient\n\t#cols: { db: string; col: string }[] = []\n\n\tconstructor(\n\t\tprivate mongoConfig: MongoDbConfig,\n\t\tdbConfig: DbConfig,\n\t) {\n\t\tsuper(dbConfig)\n\t\tthis.client = new MongoClient(mongoConfig.uri, { ignoreUndefined: true })\n\t\tInstance.on(\n\t\t\t'start',\n\t\t\tasync () => {\n\t\t\t\tawait this.client.connect()\n\n\t\t\t\tconst grouped = this.#cols.reduce<Record<string, string[]>>((acc, cur) => {\n\t\t\t\t\tif (!acc[cur.db]) acc[cur.db] = []\n\t\t\t\t\tacc[cur.db].push(cur.col)\n\t\t\t\t\treturn acc\n\t\t\t\t}, {})\n\n\t\t\t\tconst options = {\n\t\t\t\t\tchangeStreamPreAndPostImages: { enabled: true },\n\t\t\t\t}\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tObject.entries(grouped).map(async ([dbName, colNames]) => {\n\t\t\t\t\t\tconst db = this.client.db(dbName)\n\t\t\t\t\t\tconst collections = await db.listCollections<CollectionInfo>().toArray()\n\t\t\t\t\t\treturn colNames.map(async (colName) => {\n\t\t\t\t\t\t\tconst existing = collections.find((collection) => collection.name === colName)\n\t\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\texisting.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tawait db.command({ collMod: colName, ...options })\n\t\t\t\t\t\t\t} else await db.createCollection(colName, options)\n\t\t\t\t\t\t})\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t},\n\t\t\t3,\n\t\t)\n\t\tInstance.on('close', async () => this.client.close(), 1)\n\t}\n\n\tasync session<T>(callback: () => Promise<T>) {\n\t\tif (sessionStore.getStore()) return callback()\n\t\tconst session = await this.client.startSession()\n\t\treturn session.withTransaction(async () => sessionStore.run(session, callback))\n\t}\n\n\tid() {\n\t\treturn new ObjectId()\n\t}\n\n\tuse<Model extends core.Model<{ _id: string }>, Entity extends core.Entity>(config: core.Config<Model, Entity>) {\n\t\tconst db = this.getScopedDb(config.db)\n\t\tthis.#cols.push({ db, col: config.col })\n\t\treturn this.#getTable(config, this.client.db(db).collection<Model>(config.col))\n\t}\n\n\t#getTable<Model extends core.Model<IdType>, Entity extends core.Entity>(\n\t\tconfig: core.Config<Model, Entity>,\n\t\tcollection: Collection<Model>,\n\t) {\n\t\ttype WI = Model | WithId<Model>\n\t\tasync function transform(doc: WI): Promise<Entity>\n\t\t// eslint-disable-next-line no-redeclare\n\t\tasync function transform(doc: WI[]): Promise<Entity[]>\n\t\t// eslint-disable-next-line no-redeclare\n\t\tasync function transform(doc: WI | WI[]) {\n\t\t\tconst docs = Array.isArray(doc) ? doc : [doc]\n\t\t\tconst mapped = docs.map((d) => config.mapper(d as Model))\n\t\t\treturn Array.isArray(doc) ? mapped : mapped[0]\n\t\t}\n\n\t\tfunction prepInsertValue(value: core.CreateInput<Model>, id: string, now: Date, skipUpdate?: boolean) {\n\t\t\tconst base: core.Model<IdType> = {\n\t\t\t\t[idKey]: id,\n\t\t\t\t...(config.options?.skipAudit\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tcreatedAt: now.getTime(),\n\t\t\t\t\t\t\t...(skipUpdate ? {} : { updatedAt: now.getTime() }),\n\t\t\t\t\t\t}),\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t...base,\n\t\t\t} as unknown as OptionalUnlessRequiredId<Model>\n\t\t}\n\n\t\tfunction prepUpdateValue(value: core.UpdateInput<Model>, now: Date, upsert = false) {\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t$set: {\n\t\t\t\t\t...value.$set,\n\t\t\t\t\t...(upsert || (Object.keys(value).length > 0 && !config.options?.skipAudit) ? { updatedAt: now.getTime() } : {}),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst dbThis = this\n\n\t\tconst table: core.Table<IdType, Model, Entity, { collection: Collection<Model> }> = {\n\t\t\tconfig,\n\t\t\textras: { collection },\n\n\t\t\tquery: async (params: QueryParams) => {\n\t\t\t\tconst results = await parseMongodbQueryParams(collection, params)\n\t\t\t\treturn {\n\t\t\t\t\t...results,\n\t\t\t\t\tresults: (await transform(results.results as any)) as any,\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tfindMany: async (filter, options = {}) => {\n\t\t\t\tconst sortArray = Array.isArray(options.sort) ? options.sort : options.sort ? [options.sort] : []\n\t\t\t\tconst sort = sortArray.map((p) => [p.field, p.desc ? 'desc' : 'asc'] as [string, SortDirection])\n\t\t\t\tconst docs = await collection\n\t\t\t\t\t.find(filter, {\n\t\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\t\tsort,\n\t\t\t\t\t})\n\t\t\t\t\t.toArray()\n\t\t\t\treturn transform(docs)\n\t\t\t},\n\n\t\t\tfindOne: async (filter) => {\n\t\t\t\tconst result = await table.findMany(filter, { limit: 1 })\n\t\t\t\treturn result.at(0) ?? null\n\t\t\t},\n\n\t\t\tfindById: async (id) => {\n\t\t\t\tconst result = await table.findOne({ [idKey]: id } as core.Filter<Model>)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tinsertMany: async (values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\tawait collection.insertMany(payload, { session: sessionStore.getStore() })\n\n\t\t\t\tconst insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey] as any)))\n\t\t\t\treturn insertedData.filter((value) => !!value)\n\t\t\t},\n\n\t\t\tinsertOne: async (values, options = {}) => {\n\t\t\t\tconst result = await table.insertMany([values], options)\n\t\t\t\treturn result[0]\n\t\t\t},\n\n\t\t\tupdateMany: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst session = sessionStore.getStore()\n\t\t\t\tconst data = await collection.find(filter, { session, projection: { [idKey]: 1 } }).toArray()\n\t\t\t\tconst ids = data.map((doc) => doc[idKey])\n\t\t\t\tconst filterUpd = { [idKey]: { $in: ids } } as core.Filter<Model>\n\t\t\t\tawait collection.updateMany(filterUpd, prepUpdateValue(values, now), { session })\n\t\t\t\treturn table.findMany(filterUpd)\n\t\t\t},\n\n\t\t\tupdateOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {\n\t\t\t\t\treturnDocument: 'after',\n\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t})\n\t\t\t\treturn doc ? transform(doc) : null\n\t\t\t},\n\n\t\t\tupdateById: async (id, values, options = {}) => {\n\t\t\t\tconst result = await table.updateOne({ [idKey]: id } as core.Filter<Model>, values, options)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tupsertOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\n\t\t\t\tconst doc = await collection.findOneAndUpdate(\n\t\t\t\t\tfilter,\n\t\t\t\t\t{\n\t\t\t\t\t\t...prepUpdateValue('update' in values ? values.update : {}, now, true),\n\t\t\t\t\t\t// @ts-expect-error fighting ts\n\t\t\t\t\t\t$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true),\n\t\t\t\t\t},\n\t\t\t\t\t{ returnDocument: 'after', session: sessionStore.getStore(), upsert: true },\n\t\t\t\t)\n\n\t\t\t\treturn transform(doc)\n\t\t\t},\n\n\t\t\tdeleteMany: async (filter, options = {}) => {\n\t\t\t\tconst docs = await table.findMany(filter, options)\n\t\t\t\tawait collection.deleteMany(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn docs\n\t\t\t},\n\n\t\t\tdeleteOne: async (filter) => {\n\t\t\t\tconst doc = await collection.findOneAndDelete(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn doc ? transform(doc) : null\n\t\t\t},\n\n\t\t\tdeleteById: async (id) => {\n\t\t\t\tconst result = await table.deleteOne({ [idKey]: id } as core.Filter<Model>)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tbulkWrite: async (operations, options = {}) => {\n\t\t\t\tif (!operations.length) return\n\t\t\t\tconst bulk = collection.initializeUnorderedBulkOp({ session: sessionStore.getStore() })\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\toperations.forEach((operation, i) => {\n\t\t\t\t\tswitch (operation.op) {\n\t\t\t\t\t\tcase 'insert':\n\t\t\t\t\t\t\tbulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\t\tbulk.find(operation.filter).delete()\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'update':\n\t\t\t\t\t\t\tbulk.find(operation.filter).update(prepUpdateValue(operation.value, now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'upsert':\n\t\t\t\t\t\t\tbulk.find(operation.filter)\n\t\t\t\t\t\t\t\t.upsert()\n\t\t\t\t\t\t\t\t.update({\n\t\t\t\t\t\t\t\t\t...prepUpdateValue('update' in operation ? operation.update : {}, now, true),\n\t\t\t\t\t\t\t\t\t$setOnInsert: prepInsertValue(\n\t\t\t\t\t\t\t\t\t\toperation.insert as any,\n\t\t\t\t\t\t\t\t\t\toperation.makeId?.(i) ?? new ObjectId().toString(),\n\t\t\t\t\t\t\t\t\t\tnow,\n\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthrow new EquippedError(`Unknown bulkWrite operation`, { operation })\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tawait bulk.execute({ session: sessionStore.getStore() })\n\t\t\t},\n\n\t\t\twatch(callbacks) {\n\t\t\t\tif (!dbThis.config.changes)\n\t\t\t\t\tInstance.crash(new EquippedError('Db changes are not enabled in the configuration.', { config }))\n\t\t\t\treturn new MongoDbChange<Model, Entity>(dbThis.mongoConfig, dbThis.config.changes, collection, callbacks, config.mapper)\n\t\t\t},\n\t\t}\n\n\t\treturn table\n\t}\n}\n",null]}