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: Number, required: true, }, end: { type: Number, 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 = () => {}) { }; const Item = mongoose.model('Item', ItemSchema); module.exports = Item;