const mongoose = require('mongoose'); const variantSchema = new mongoose.Schema( { label: { type: String, required: true, trim: true }, // e.g. "Half", "Full", "1 Litre" price: { type: Number, required: true, min: 0 }, available: { type: Boolean, default: true }, }, { _id: true } ); const menuItemSchema = new mongoose.Schema( { name: { type: String, required: true, trim: true }, category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category', required: true }, image: { type: String, default: null }, // Cloudinary URL available: { type: Boolean, default: true }, // Variants: every dish has at least one variant. // Single-price dish → one variant with label "Regular" or blank. // Deal → one variant with a fixed price, category = Deals category. variants: { type: [variantSchema], required: true, validate: [(v) => v.length > 0, 'At least one variant required'] }, }, { timestamps: true } ); // Index for fast menu-all query menuItemSchema.index({ category: 1, available: 1 }); module.exports = mongoose.model('MenuItem', menuItemSchema);