140 lines
2.2 KiB
JavaScript
140 lines
2.2 KiB
JavaScript
const { ITEM_TYPES } = require('./constants.js');
|
|
|
|
const config = require('../config.js');
|
|
const mongoose = require('mongoose');
|
|
const timestamps = require('mongoose-timestamp');
|
|
|
|
const ItemSchema = new mongoose.Schema(
|
|
{
|
|
eventId: {
|
|
type: String,
|
|
required: true,
|
|
trim: true,
|
|
},
|
|
|
|
title: {
|
|
type: String,
|
|
required: true,
|
|
trim: true,
|
|
},
|
|
subtitle: {
|
|
type: String,
|
|
trim: true,
|
|
},
|
|
donor: {
|
|
type: String,
|
|
trim: true,
|
|
},
|
|
description: {
|
|
type: String,
|
|
required: true,
|
|
trim: true,
|
|
},
|
|
images: [{
|
|
url: String
|
|
}],
|
|
|
|
type: ITEM_TYPES,
|
|
|
|
quantityAvailable: {
|
|
type: Number,
|
|
required: true,
|
|
default: 1,
|
|
},
|
|
soldCount: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
|
|
currentPrice: {
|
|
required: true,
|
|
type: Number,
|
|
},
|
|
startingPrice: {
|
|
type: Number,
|
|
},
|
|
reservePrice: {
|
|
type: Number,
|
|
},
|
|
estimatedValue: {
|
|
type: Number,
|
|
},
|
|
|
|
currentWinner: {
|
|
type: String,
|
|
trim: true,
|
|
},
|
|
bidders: [{
|
|
name: String,
|
|
}],
|
|
bidCount: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
bidIncrement: {
|
|
type: Number,
|
|
default: 10,
|
|
},
|
|
|
|
catalogNumber: {
|
|
type: Number,
|
|
},
|
|
|
|
start: {
|
|
type: Date,
|
|
required: true,
|
|
},
|
|
end: {
|
|
type: Date,
|
|
required: true,
|
|
},
|
|
hideBeforeStart: {
|
|
type: Boolean,
|
|
required: true,
|
|
default: false,
|
|
},
|
|
hideAfterEnd: {
|
|
type: Boolean,
|
|
required: true,
|
|
default: false,
|
|
},
|
|
notifyOnAvailable: {
|
|
type: Boolean,
|
|
required: true,
|
|
default: false,
|
|
},
|
|
|
|
isShippable: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
shippingCost: Number,
|
|
|
|
organizationTake: {
|
|
type: Number,
|
|
required: true,
|
|
default: 1,
|
|
},
|
|
},
|
|
|
|
{ minimize: false },
|
|
);
|
|
|
|
ItemSchema.plugin(timestamps);
|
|
|
|
ItemSchema.path('images').get(v => `${config.assetStoreUrl}${v.url}`);
|
|
|
|
/**
|
|
* STATICS
|
|
*/
|
|
ItemSchema.statics.addBatch = function(data = [], callback = () => {}) {
|
|
|
|
};
|
|
|
|
ItemSchema.statics.getAuctionItemsByEvent = function(eventId, callback = () => {}) {
|
|
return this.find({ eventId, type: 'auction' }, callback);
|
|
};
|
|
|
|
const Item = mongoose.model('Item', ItemSchema);
|
|
module.exports = Item;
|