148 lines
2.2 KiB
JavaScript
148 lines
2.2 KiB
JavaScript
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;
|