UNPKG

ajinkya-mhetre-mern

Version:

A MERN starter with frontend and backend folders

68 lines (62 loc) 1.49 kB
// ===== src/models/Order.js ===== const mongoose = require('mongoose'); const orderItemSchema = new mongoose.Schema({ product: { type: mongoose.Schema.Types.ObjectId, ref: 'Product', required: true }, quantity: { type: Number, required: true, min: 1 }, price: { type: Number, required: true }, farmer: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true } }); const orderSchema = new mongoose.Schema({ customer: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, items: [orderItemSchema], totalAmount: { type: Number, required: true }, status: { type: String, enum: ['placed', 'processing', 'dispatched', 'delivered', 'cancelled'], default: 'placed' }, shippingAddress: { street: { type: String, required: true }, city: { type: String, required: true }, state: { type: String, required: true }, zipCode: { type: String, required: true } }, paymentStatus: { type: String, enum: ['pending', 'paid', 'failed'], default: 'pending' }, trackingNumber: String, statusHistory: [{ status: String, timestamp: { type: Date, default: Date.now }, note: String }] }, { timestamps: true }); orderSchema.index({ customer: 1, status: 1 }); orderSchema.index({ 'items.farmer': 1 }); module.exports = mongoose.model('Order', orderSchema);