Files
Eventment-API/models/item.js

136 lines
2.1 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: 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;