Initial backend code
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
const mongoose = require('mongoose');
|
||||
|
||||
const equitySchema = new mongoose.Schema({
|
||||
title: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true
|
||||
},
|
||||
description: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
enum: ['coupon', 'membership', 'discount', 'gift', 'other'],
|
||||
required: true
|
||||
},
|
||||
platform: {
|
||||
type: String,
|
||||
required: true,
|
||||
enum: ['taobao', 'jd', 'pdd', 'meituan', 'eleme', 'douyin', 'kuaishou', 'other']
|
||||
},
|
||||
value: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
unit: {
|
||||
type: String,
|
||||
default: '元'
|
||||
},
|
||||
validStart: {
|
||||
type: Date,
|
||||
required: true
|
||||
},
|
||||
validEnd: {
|
||||
type: Date,
|
||||
required: true
|
||||
},
|
||||
status: {
|
||||
type: String,
|
||||
enum: ['active', 'used', 'expired', 'transferred'],
|
||||
default: 'active'
|
||||
},
|
||||
owner: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'User',
|
||||
required: true
|
||||
},
|
||||
source: {
|
||||
type: String,
|
||||
enum: ['manual', 'import', 'purchase', 'transfer'],
|
||||
default: 'manual'
|
||||
},
|
||||
images: [{
|
||||
type: String
|
||||
}],
|
||||
tags: [{
|
||||
type: String
|
||||
}],
|
||||
isTransferable: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
transferPrice: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
metadata: {
|
||||
type: mongoose.Schema.Types.Mixed,
|
||||
default: {}
|
||||
}
|
||||
}, {
|
||||
timestamps: true
|
||||
});
|
||||
|
||||
equitySchema.index({ owner: 1, status: 1 });
|
||||
equitySchema.index({ platform: 1, type: 1 });
|
||||
equitySchema.index({ validEnd: 1 });
|
||||
|
||||
module.exports = mongoose.model('Equity', equitySchema);
|
||||
Reference in New Issue
Block a user