Spaces:
Running
Running
| 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); | |