- Initial commit... A DB, some routes, and basic authentication routines...
This commit is contained in:
136
models/item.js
Normal file
136
models/item.js
Normal file
@@ -0,0 +1,136 @@
|
||||
const { ITEM_TYPES } = require('./constants.js');
|
||||
|
||||
const config = require('../config.js');
|
||||
const mongoose = require('mongoose');
|
||||
const mongooseStringQuery = require('mongoose-string-query');
|
||||
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;
|
||||
Reference in New Issue
Block a user