export const operations = () => { return { ts: `import { Db, FilterQuery, ObjectId, OptionalId, CollectionInsertOneOptions, UpdateOneOptions, MatchKeysAndValues, } from 'mongodb'; import * as collections from './collections'; import { Models } from './models'; export const Orm = (db: Db, collection: T) => { type Model = Models[T] & { _id: ObjectId }; const c = collections[collection]; const col = db.collection(c); const create = (docs: OptionalId, options?: CollectionInsertOneOptions) => db.collection(c).insertOne(docs, options); const update = (filter: FilterQuery, update: MatchKeysAndValues, options?: UpdateOneOptions) => db.collection(c).updateOne(filter, { $set: update }, options); const one = (filter: FilterQuery) => db.collection(c).findOne(filter); const oneOrThrow = async (filter: FilterQuery) => { const o = await db.collection(c).findOne(filter); if (!o) { throw new Error(\`Cannot find \${c} object for that params\`); } return o; }; const list = (filter: FilterQuery = {}) => db .collection(c) .find(filter) .toArray(); const remove = (filter: FilterQuery = {}) => db.collection(c).deleteOne(filter); const removeMany = (filter: FilterQuery = {}) => db.collection(c).deleteMany(filter); return { col, create, update, one, oneOrThrow, list, remove, removeMany, }; };`, }; };