mongoose-delete-ts
Version:
Mongoose soft delete plugin
57 lines (56 loc) • 3.25 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
const deleteDocument_1 = require("./utils/deleteDocument");
const restoreDocument_1 = require("./utils/restoreDocument");
const mergeOptions_1 = __importDefault(require("./utils/mergeOptions"));
function default_1(schema, schemaOptions, deletedFieldOptions) {
schema.statics.deleteOne = async function (filter, options) {
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions);
const updateOneFn = this.updateOne.bind(this);
const result = await updateOneFn(filter ?? {}, update, (0, mergeOptions_1.default)(options, schemaOptions));
return convertToDeleteResult(result);
};
schema.statics.deleteMany = async function (filter, options) {
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions);
const result = await this.updateMany.call(this, filter ?? {}, update, (0, mergeOptions_1.default)(options, schemaOptions));
return convertToDeleteResult(result);
};
schema.statics.deleteOneByUser = async function (user, filter, options) {
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions, user);
const updateOneFn = this.updateOne.bind(this);
const result = await updateOneFn(filter ?? {}, update, (0, mergeOptions_1.default)(options, schemaOptions));
return convertToDeleteResult(result);
};
schema.statics.deleteManyByUser = async function (user, filter, options) {
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions, user);
const result = await this.updateMany.call(this, filter ?? {}, update, (0, mergeOptions_1.default)(options, schemaOptions));
return convertToDeleteResult(result);
};
schema.statics.findOneAndDelete = function (filter, options) {
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions);
return this.findOneAndUpdate.call(this, filter, update, (0, mergeOptions_1.default)(options, schemaOptions));
};
schema.statics.findByIdAndDelete = function (id, options) {
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions);
return this.findByIdAndUpdate.call(this, id, update, (0, mergeOptions_1.default)(options, schemaOptions));
};
schema.statics.restoreOne = function (filter, options) {
const update = (0, restoreDocument_1.staticRestore)(deletedFieldOptions);
const updateOneFn = this.updateOne.bind(this);
return updateOneFn({ ...filter, deleted: true }, update, (0, mergeOptions_1.default)(options, schemaOptions));
};
schema.statics.restoreMany = function (filter, options) {
const update = (0, restoreDocument_1.staticRestore)(deletedFieldOptions);
return this.updateMany.call(this, { ...filter, deleted: true }, update, (0, mergeOptions_1.default)(options, schemaOptions));
};
}
function convertToDeleteResult(result) {
return {
acknowledged: result.acknowledged,
deletedCount: result.modifiedCount
};
}
;