diff options
Diffstat (limited to 'backend/src/models/MenuItem.js')
-rw-r--r-- | backend/src/models/MenuItem.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/backend/src/models/MenuItem.js b/backend/src/models/MenuItem.js new file mode 100644 index 0000000..47701c8 --- /dev/null +++ b/backend/src/models/MenuItem.js @@ -0,0 +1,73 @@ +const mongoose = require('mongoose'); + +const menuItemSchema = new mongoose.Schema( + { + name: { + type: String, + required: [true, 'Menu item name is required'], + trim: true + }, + description: { + type: String, + trim: true + }, + price: { + type: Number, + required: [true, 'Price is required'], + min: 0 + }, + category: { + type: mongoose.Schema.Types.ObjectId, + ref: 'Category', + required: [true, 'Category is required'] + }, + image: { + type: String + }, + ingredients: { + type: [String], + default: [] + }, + available: { + type: Boolean, + default: true + }, + vegetarian: { + type: Boolean, + default: false + }, + vegan: { + type: Boolean, + default: false + }, + glutenFree: { + type: Boolean, + default: false + }, + spiceLevel: { + type: Number, + min: 0, + max: 5, + default: 0 + }, + preparationTime: { + type: Number, + min: 0, + default: 15 + }, + featuredItem: { + type: Boolean, + default: false + } + }, + { + timestamps: true + } +); + +// Create text index for search functionality +menuItemSchema.index({ name: 'text', description: 'text', ingredients: 'text' }); + +const MenuItem = mongoose.model('MenuItem', menuItemSchema); + +module.exports = MenuItem;
\ No newline at end of file |