UNPKG

mongodb-dynamic-api

Version:

Auto generated CRUD API for MongoDB using NestJS

70 lines 3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RepositoryHelper = void 0; const mongodb_pipeline_builder_1 = require("mongodb-pipeline-builder"); const services_1 = require("../services"); class RepositoryHelper { static async getRepository(entity) { const model = await services_1.DynamicApiGlobalStateService.getEntityModel(entity); return { aggregate: (pipeline) => RepositoryHelper.aggregate(model, pipeline), bulkCreate: (toCreateList) => RepositoryHelper.bulkCreate(model, toCreateList), create: (toCreate) => RepositoryHelper.create(model, toCreate), delete: (query) => RepositoryHelper.delete(model, query), find: (query) => RepositoryHelper.find(model, query), findAll: (query) => RepositoryHelper.findAll(model, query), paginate: (pipeline) => RepositoryHelper.paginate(model, pipeline), update: (query, toUpdate, options) => RepositoryHelper.update(model, query, toUpdate, options), }; } static aggregate(model, pipeline) { return (0, mongodb_pipeline_builder_1.GetResult)(model, pipeline); } static paginate(model, pipeline) { return (0, mongodb_pipeline_builder_1.GetPagingResult)(model, pipeline); } static async findAll(model, query = {}) { const entities = await model.find(query).lean().exec(); return entities.map(entity => ({ ...entity, id: entity._id.toString() })); } static async find(model, query) { const entity = await model.findOne(query).lean().exec(); if (!entity) { return null; } return { ...entity, id: entity._id.toString() }; } static async create(model, toCreate) { const entity = await model.create(toCreate); return { ...entity.toObject(), id: entity._id.toString() }; } static async update(model, query, toUpdate, options = {}) { const entity = await model .findOneAndUpdate(query, { $set: toUpdate }, { ...options, new: true }) .lean() .exec(); if (!entity) { return null; } return { ...entity, id: entity._id.toString() }; } static async delete(model, query) { if (query.id) { const { deletedCount } = await model.deleteOne({ _id: query.id }).exec(); return deletedCount === 1; } else if (query.idList) { const { deletedCount } = await model.deleteMany({ _id: { $in: query.idList } }).exec(); return deletedCount === query.idList.length; } else { return false; } } static async bulkCreate(model, toCreate) { const entities = await model.create(toCreate); return entities.map(entity => ({ ...entity.toObject(), id: entity._id.toString() })); } } exports.RepositoryHelper = RepositoryHelper; //# sourceMappingURL=repository.helper.js.map