Sindbad~EG File Manager
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _mongoose = _interopRequireDefault(require("mongoose"));
var _apiError = _interopRequireDefault(require("../utils/apiError"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
var Store = new _mongoose["default"].Schema({
name: {
type: String,
unique: true,
required: true
},
description: {
type: String,
required: false,
"default": ""
},
image: {
type: String,
"default": ""
},
address: {
country: {
type: String,
"default": ""
},
province: {
type: String,
"default": ""
},
city: {
type: String,
"default": ""
}
},
products: [{
product_id: {
type: _mongoose["default"].Schema.ObjectId,
ref: "Product"
},
quantity: {
type: Number,
required: true,
"default": 0,
min: [0, "Ensures quantity is always positive"]
}
}]
}, {
timestamps: true
});
// Middleware to auto-populate refs with specific fields
function autoPopulateRefs(next) {
var options = this.getOptions ? this.getOptions() : {};
if (!options.skipPopulate) {
this.populate({
path: "products.product_id"
// select: "prod_name _id",
});
}
next();
}
Store.post("save", function (error, doc, next) {
if (error.name === "MongoServerError" && error.code === 11000) {
// Customize the error message for duplicate name
next(
// new AppError("The store name must be unique. This name already exists.")
new _apiError["default"](error.message));
} else {
next(new _apiError["default"](error.message));
}
});
Store.pre("find", autoPopulateRefs).pre("findOne", autoPopulateRefs);
// Pre-remove hook using deleteOne
Store.pre("remove", function (next) {
console.log({
"Store is about to be removed:": this._id
});
next();
});
var _default = exports["default"] = _mongoose["default"].model("Store", Store);
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists