lexica-dialog-repository
Version:
56 lines • 1.78 kB
JavaScript
;
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