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: { type: Boolean, default: false, }, sendNotification: Date, notificationContent: String, notificationLinksTo: String, timestamp: Date, } ); 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: Date, required: true, }, endSale: { type: Date, required: true, }, }, { minimize: false }, ); const EventSchema = new mongoose.Schema( { startTime: { type: Date, required: true, }, endTime: { type: Date, 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: Date, required: true, }, showUntil: { type: Date, required: 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;