UNPKG

mongodb-dynamic-api

Version:

Auto generated CRUD API for MongoDB using NestJS

48 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseDuplicateManyService = void 0; const class_transformer_1 = require("class-transformer"); const mixins_1 = require("../../mixins"); const services_1 = require("../../services"); class BaseDuplicateManyService extends services_1.BaseService { constructor(model) { super(model); this.model = model; } async duplicateMany(ids, partial) { try { const toDuplicateList = await this.model .find({ _id: { $in: ids }, ...(this.isSoftDeletable ? { isDeleted: false } : undefined), }) .lean() .exec(); if (!toDuplicateList?.length) { this.handleDocumentNotFound(); } const duplicatedList = await this.model.create(toDuplicateList.map((d) => (0, class_transformer_1.plainToInstance)(this.entity, { ...Object.entries(d).reduce((acc, [key, value]) => { if ((0, mixins_1.baseEntityKeysToExclude)().includes(key)) { return acc; } return { ...acc, [key]: value }; }, {}), ...partial ?? {}, }))); const documents = await this.model.find({ _id: { $in: duplicatedList.map(({ _id }) => _id.toString()) } }) .lean() .exec(); if (this.callback && documents.length) { await Promise.all(documents.map((document) => this.callback(this.addDocumentId(document), this.callbackMethods))); } return documents.map((d) => this.buildInstance(d)); } catch (error) { this.handleMongoErrors(error, false); this.handleDuplicateKeyError(error); } } } exports.BaseDuplicateManyService = BaseDuplicateManyService; //# sourceMappingURL=base-duplicate-many.service.js.map