ingredient.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. const isSanitary = require("../validator.js").isSanitary;
  2. const mongoose = require("mongoose");
  3. const IngredientSchema = new mongoose.Schema({
  4. name: {
  5. type: String,
  6. minlength: [2, "INGREDIENT NAME MUST CONTAIN AT LEAST 2 CHARACTERS"],
  7. required: [true, "INGREDIENT NAME IS REQUIRED"],
  8. validate: {
  9. validator: isSanitary,
  10. message: "INGREDIENT NAME CONTAINS ILLEGAL CHARACTERS"
  11. }
  12. },
  13. category: {
  14. type: String,
  15. minlength: [2, "INGREDIENT CATEGORY MUST CONTAIN AT LEAST 2 CHARACTERS"],
  16. required: [true, "INGREDIENT CATEGORY IS REQUIRED"],
  17. validate: {
  18. validator: isSanitary,
  19. message: "INGREDIENT CATEGORY CONTAINS ILLEGAL CHARACTERS"
  20. }
  21. },
  22. unit: {
  23. type: String,
  24. required: true
  25. },
  26. altUnit: {
  27. type: String,
  28. required: false
  29. },
  30. convert: {
  31. toMass: Number,
  32. toVolume: Number,
  33. toLength: Number,
  34. toBottle: Number
  35. },
  36. ingredients: [{
  37. ingredient: {
  38. type: mongoose.Schema.Types.ObjectId,
  39. ref: "Ingredient",
  40. required: true
  41. },
  42. quantity: {
  43. type: Number,
  44. required: true,
  45. min: 0
  46. },
  47. unit: {
  48. type: String,
  49. required: true
  50. }
  51. }],
  52. });
  53. module.exports = mongoose.model("Ingredient", IngredientSchema);