order.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. const isSanitary = require("../controllers/helper.js").isSanitary;
  2. const mongoose = require("mongoose");
  3. const OrderSchema = new mongoose.Schema({
  4. merchant: {
  5. type: mongoose.Schema.Types.ObjectId,
  6. ref: "Merchant",
  7. required: [true, "MUST PROVIDE THE MERCHANT"]
  8. },
  9. name: {
  10. type: String,
  11. minlength: [2, "ORDER NAME MUST CONTAIN AT LEAST 2 CHARACTERS"],
  12. validate: {
  13. validator: isSanitary,
  14. message: "ORDER NAME CONTAINS ILLEGAL CHARACTERS"
  15. }
  16. },
  17. date: {
  18. type: Date,
  19. default: Date.now,
  20. required: [true, "MUST PROVIDE A DATE FOR THE ORDER"]
  21. },
  22. taxes: Number,
  23. fees: Number,
  24. ingredients: [{
  25. ingredient: {
  26. type: mongoose.Schema.Types.ObjectId,
  27. ref: "Ingredient",
  28. required: [true, "MUST PROVIDE THE INGREDIENT"]
  29. },
  30. quantity: {
  31. type: Number,
  32. required: [true, "MUST PROVIDE THE QUANTITY FOR EVERY INGREDIENT IN THE ORDER"],
  33. min: [0, "INGREDIENT QUANTITY IN AN ORDER CANNOT BE LESS THAN 0"]
  34. },
  35. pricePerUnit: {
  36. type: Number,
  37. min: [0, "PRICE PER UNIT CANNOT BE A NEGATIVE NUMBER"]
  38. }
  39. }]
  40. });
  41. module.exports = mongoose.model("Order", OrderSchema);