const mongoose = require('mongoose'); const promoSchema = new mongoose.Schema( { code: { type: String, required: true, unique: true, uppercase: true, trim: true, }, type: { type: String, enum: ['percentage', 'fixed', 'shipping', 'welcome'], required: true, }, value: { type: Number, required: true, }, active: { type: Boolean, default: true, }, startsAt: { type: Date, }, expiresAt: { type: Date, }, usageLimit: { type: Number, default: null, // null = unlimited }, usedCount: { type: Number, default: 0, }, perUserLimit: { type: Number, default: 1, }, minOrderValue: { type: Number, default: 0, }, productIds: [ { type: mongoose.Schema.ObjectId, ref: 'Product', }, ], categoryId: { type: mongoose.Schema.ObjectId, ref: 'Category', default: null, }, canBeUsedWithSaleItems: { type: Boolean, default: true, }, description: String, createdBy: { type: mongoose.Schema.ObjectId, ref: 'User', }, }, { timestamps: true, }, ); module.exports = mongoose.model('PromoCode', promoSchema);