order.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. required: [true, "MUST PROVIDE A DATE FOR THE ORDER"],
  20. validate: {
  21. validator: date => date < new Date,
  22. message: "ORDER DATE CANNOT BE SET TO THE FUTURE"
  23. }
  24. },
  25. taxes: Number,
  26. fees: Number,
  27. ingredients: [{
  28. ingredient: {
  29. type: mongoose.Schema.Types.ObjectId,
  30. ref: "Ingredient",
  31. required: [true, "MUST PROVIDE THE INGREDIENT"]
  32. },
  33. quantity: {
  34. type: Number,
  35. required: [true, "MUST PROVIDE THE QUANTITY FOR EVERY INGREDIENT IN THE ORDER"],
  36. min: [0, "INGREDIENT QUANTITY IN AN ORDER CANNOT BE LESS THAN 0"]
  37. },
  38. pricePerUnit: {
  39. type: Number,
  40. min: [0, "PRICE PER UNIT CANNOT BE A NEGATIVE NUMBER"]
  41. }
  42. }]
  43. });
  44. module.exports = mongoose.model("Order", OrderSchema);