Added persistent rescheduling of nowPlaying after server goes down.
This commit is contained in:
parent
179a10fb72
commit
a41541d07b
10 changed files with 124 additions and 25 deletions
|
|
@ -29,6 +29,7 @@ const emoteModel = require('../emoteSchema');
|
|||
//DB Schemas
|
||||
const channelPermissionSchema = require('./channelPermissionSchema');
|
||||
const channelBanSchema = require('./channelBanSchema');
|
||||
const queuedMediaSchema = require('./media/queuedMediaSchema');
|
||||
//Utils
|
||||
const { exceptionHandler, errorHandler } = require('../../utils/loggerUtils');
|
||||
|
||||
|
|
@ -98,6 +99,11 @@ const channelSchema = new mongoose.Schema({
|
|||
default: emoteModel.typeEnum[0]
|
||||
}
|
||||
}],
|
||||
media: {
|
||||
nowPlaying: queuedMediaSchema,
|
||||
scheduled: [queuedMediaSchema],
|
||||
archived: [queuedMediaSchema],
|
||||
},
|
||||
//Thankfully we don't have to keep track of alts, ips, or deleted users so this should be a lot easier than site-wide bans :P
|
||||
banList: [channelBanSchema]
|
||||
});
|
||||
|
|
|
|||
|
|
@ -42,6 +42,10 @@ const mediaSchema = new mongoose.Schema({
|
|||
type: mongoose.SchemaTypes.Number,
|
||||
required: true,
|
||||
},
|
||||
});
|
||||
},
|
||||
{
|
||||
discriminatorKey: 'status'
|
||||
}
|
||||
);
|
||||
|
||||
module.exports = mediaSchema;
|
||||
|
|
@ -19,16 +19,44 @@ const {mongoose} = require('mongoose');
|
|||
|
||||
//Local Imports
|
||||
const mediaSchema = require('./mediaSchema');
|
||||
const queuedMedia = require('../../../app/channel/media/queuedMedia');
|
||||
|
||||
const queuedProperties = new mongoose.Schema({
|
||||
startTime: {
|
||||
type: mongoose.SchemaTypes.Number,
|
||||
required: true,
|
||||
},
|
||||
startTimeStamp: {
|
||||
type: mongoose.SchemaTypes.Number,
|
||||
required: false,
|
||||
},
|
||||
earlyEnd: {
|
||||
type: mongoose.SchemaTypes.Number,
|
||||
required: false,
|
||||
},
|
||||
uuid: {
|
||||
type: mongoose.SchemaTypes.UUID,
|
||||
required: true,
|
||||
}
|
||||
},
|
||||
{
|
||||
discriminatorKey: 'status'
|
||||
});
|
||||
|
||||
module.exports = mediaSchema.descriminiator('queued', queuedProperties);
|
||||
//methods
|
||||
queuedProperties.methods.rehydrate = function(){
|
||||
return new queuedMedia(
|
||||
this.title,
|
||||
this.fileName,
|
||||
this.url,
|
||||
this.id,
|
||||
this.type,
|
||||
this.duration,
|
||||
this.startTime,
|
||||
this.startTimeStamp,
|
||||
this.earlyEnd,
|
||||
this.uuid.toString()
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = mediaSchema.discriminator('queued', queuedProperties);
|
||||
Loading…
Add table
Add a link
Reference in a new issue