Sindbad~EG File Manager

Current Path : /home/infinitibizsol/irfarms.infinitibizsol.com/models/
Upload File :
Current File : /home/infinitibizsol/irfarms.infinitibizsol.com/models/storeModel.js

"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