UNPKG

ncrudify

Version:

Configurable CRUD module for NestJS and Mongoose.

86 lines 3.38 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CrudifyService = void 0; const mongoose_1 = require("mongoose"); const query_parser_namespace_1 = require("./query-parser.namespace"); const common_1 = require("@nestjs/common"); let CrudifyService = class CrudifyService { constructor(model) { this.model = model; } async create(createDto) { const entity = new this.model(createDto); return entity.save(); } async createBulk(data) { return this.model.insertMany(data); } async findAll(query = {}) { const { filters, populate, sort, skip, limit } = query_parser_namespace_1.QueryParser.parse(query); const results = await this.model .find(filters) .populate(populate) .sort(sort) .skip(skip) .limit(limit) .exec(); const total = await this.model.countDocuments(filters).exec(); return { results, total, page: Math.ceil(skip / limit) }; } async findOne(filter) { return this.model.findOne(filter).exec(); } async count(filter) { return this.model.countDocuments(filter).exec(); } async put(id, updateDto) { return this.model .findOneAndReplace({ _id: id }, updateDto, { new: true }) .exec(); } async update(id, updateDto) { return this.model .findOneAndUpdate({ _id: id }, updateDto, { new: true }) .exec(); } async updateBulk(filter, updateDto) { return this.model.updateMany(filter, { $set: updateDto }).exec(); } async delete(id) { return this.model.findByIdAndDelete(id).exec(); } async deleteBulk(filter) { return this.model.deleteMany(filter).exec(); } async softDelete(id) { return this.model .findOneAndUpdate({ _id: id }, { deletedAt: new Date() }, { new: true }) .exec(); } async softDeleteBulk(filter) { return this.model .updateMany(filter, { $set: { deletedAt: new Date() } }) .exec(); } async restore(id) { return this.model.findByIdAndUpdate(id, { deletedAt: null }, { new: true }); } async restoreBulk(filter) { return this.model.updateMany(filter, { $set: { deletedAt: null } }).exec(); } }; exports.CrudifyService = CrudifyService; exports.CrudifyService = CrudifyService = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [mongoose_1.Model]) ], CrudifyService); //# sourceMappingURL=crudify.service.js.map