@stenneepro/mongoose-soft-delete
Version:
Mongoose soft delete plugin
63 lines (62 loc) • 3.59 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 mongoose_1 = require("mongoose");
const getOverloadedArguments_1 = __importDefault(require("./utils/getOverloadedArguments"));
const deleteDocument_1 = require("./utils/deleteDocument");
const restoreDocument_1 = require("./utils/restoreDocument");
function default_1(schema, deletedFieldOptions) {
schema.statics.deleteOne = async function (filterArg, optionsArg) {
const [filter, options] = (0, getOverloadedArguments_1.default)(filterArg, optionsArg);
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions);
const result = await mongoose_1.Model.updateOne.apply(this, [filter, update, options]);
return convertToDeleteResult(result);
};
schema.statics.deleteMany = async function (filterArg, optionsArg) {
const [filter, options] = (0, getOverloadedArguments_1.default)(filterArg, optionsArg);
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions);
const result = await mongoose_1.Model.updateMany.apply(this, [filter, update, options]);
return convertToDeleteResult(result);
};
schema.statics.deleteOneByUser = async function (user, filterArg, optionsArg) {
const [filter, options] = (0, getOverloadedArguments_1.default)(filterArg, optionsArg);
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions, user);
const result = await mongoose_1.Model.updateOne.apply(this, [filter, update, options]);
return convertToDeleteResult(result);
};
schema.statics.deleteManyByUser = async function (user, filterArg, optionsArg) {
const [filter, options] = (0, getOverloadedArguments_1.default)(filterArg, optionsArg);
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions, user);
const result = await mongoose_1.Model.updateMany.apply(this, [filter, update, options]);
return convertToDeleteResult(result);
};
schema.statics.findOneAndDelete = function (filter, options) {
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions);
return mongoose_1.Model.findOneAndUpdate.apply(this, [filter, update, options]);
};
schema.statics.findByIdAndDelete = function (id, options) {
const update = (0, deleteDocument_1.staticDelete)(deletedFieldOptions);
return mongoose_1.Model.findByIdAndUpdate.apply(this, [id, update, options]);
};
schema.statics.restoreOne = function (filterArg, optionsArg) {
const [filter, options] = (0, getOverloadedArguments_1.default)(filterArg, optionsArg);
Object.assign(options, { ignoreDeleted: true });
const update = (0, restoreDocument_1.staticRestore)(deletedFieldOptions);
return mongoose_1.Model.updateOne.apply(this, [filter, update, options]);
};
schema.statics.restoreMany = function (filterArg, optionsArg) {
const [filter, options] = (0, getOverloadedArguments_1.default)(filterArg, optionsArg);
Object.assign(options, { ignoreDeleted: true });
const update = (0, restoreDocument_1.staticRestore)(deletedFieldOptions);
return mongoose_1.Model.updateMany.apply(this, [filter, update, options]);
};
}
function convertToDeleteResult(result) {
return {
acknowledged: result.acknowledged,
deletedCount: result.modifiedCount,
};
}