- Initial commit... A DB, some routes, and basic authentication routines...
This commit is contained in:
147
models/event.js
Normal file
147
models/event.js
Normal file
@@ -0,0 +1,147 @@
|
||||
const config = require('../config.js');
|
||||
const mongoose = require('mongoose');
|
||||
const timestamps = require('mongoose-timestamp');
|
||||
|
||||
const PostSchema = new mongoose.Schema(
|
||||
{
|
||||
author: String,
|
||||
|
||||
title: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
content: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
|
||||
isPublic: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
|
||||
scheduledPost: String,
|
||||
|
||||
sendNotification: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
notificationContent: String,
|
||||
notificationLinksTo: String,
|
||||
}
|
||||
);
|
||||
|
||||
const TicketSchema = new mongoose.Schema(
|
||||
{
|
||||
name: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
price: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
|
||||
capacity: {
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
available: {
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
|
||||
itemId: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
|
||||
startSale: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
endSale: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
},
|
||||
|
||||
{ minimize: false },
|
||||
);
|
||||
|
||||
const EventSchema = new mongoose.Schema(
|
||||
{
|
||||
eventDate: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
startTime: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
endTime: {
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
|
||||
title: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
tagline: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
description: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
|
||||
isTicketed: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
ticketClasses: [ TicketSchema ],
|
||||
|
||||
showFrom: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
showUntil: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true,
|
||||
},
|
||||
|
||||
requireLoginToSeeAuction: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
|
||||
images: [{
|
||||
url: String,
|
||||
}],
|
||||
url: String,
|
||||
|
||||
posts: [ PostSchema ],
|
||||
},
|
||||
|
||||
{ minimize: false },
|
||||
);
|
||||
|
||||
EventSchema.plugin(timestamps);
|
||||
|
||||
EventSchema.path('images').get(v => `${config.assetStoreUrl}${v.url}`)
|
||||
|
||||
const Event = mongoose.model('Event', EventSchema);
|
||||
module.exports = Event;
|
||||
Reference in New Issue
Block a user