UNPKG

lexica-dialog-repository

Version:
56 lines 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const CRUDRepository_1 = require("./CRUDRepository"); const Shared_1 = require("./Shared"); class SoftDeleteRepository extends CRUDRepository_1.default { async findPage(pageable, query) { return super.findPage(pageable, Object.assign({}, query, { deleted: false })); } async findOne(query) { return super.findOne(Object.assign({}, query, { deleted: false })); } async findById(id) { const e = await this.model.findById(id); if (e !== null && e.deleted === true) { return null; } return e; } async findByIds(ids, sorts, idFieldName = '_id') { return this.model.find({ [idFieldName]: { $in: ids, }, deleted: false, }, sorts); } async remove(entity, deletedBy = Shared_1.defaultUser, deletedAt = new Date()) { entity.deleted = true; entity.deletedBy = deletedBy; entity.deletedAt = deletedAt; return entity.save(); } async removeAll(deletedBy = Shared_1.defaultUser, deletedAt = new Date()) { return this.model.update({}, { deleted: true, deletedAt, deletedBy, }); } createFind(query, sorts = []) { return super.createFind(Object.assign({}, query, { deleted: false }), sorts); } createAggregate(...aggregations) { return this.model.aggregate([ { $match: { deleted: false, }, }, ...aggregations ]) .allowDiskUse(true); } } exports.default = SoftDeleteRepository; //# sourceMappingURL=SoftDeleteRepository.js.map