UNPKG

@stenneepro/mongoose-soft-delete

Version:
63 lines (62 loc) 3.59 kB
"use strict"; 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, }; }