Created playlist queue schema.
This commit is contained in:
parent
8a273d8055
commit
cb09c139c7
|
|
@ -644,8 +644,8 @@ module.exports = class{
|
||||||
//Get our channel
|
//Get our channel
|
||||||
const chanDB = await channelModel.findOne({name: this.channel.name});
|
const chanDB = await channelModel.findOne({name: this.channel.name});
|
||||||
|
|
||||||
//If nowPlaying isn't null
|
//If nowPlaying isn't null and isn't what we're about to throw on
|
||||||
if(chanDB.media.nowPlaying != null){
|
if(chanDB.media.nowPlaying != null && chanDB.media.nowPlaying.uuid.toString != mediaObj.uuid){
|
||||||
//Archive whats already in there since we're about to clobber the fuck out of it
|
//Archive whats already in there since we're about to clobber the fuck out of it
|
||||||
chanDB.media.archived.push(chanDB.media.nowPlaying);
|
chanDB.media.archived.push(chanDB.media.nowPlaying);
|
||||||
}
|
}
|
||||||
|
|
@ -935,7 +935,7 @@ module.exports = class{
|
||||||
//If the media hasn't ended yet
|
//If the media hasn't ended yet
|
||||||
if(wasPlaying.getEndTime() > now){
|
if(wasPlaying.getEndTime() > now){
|
||||||
//Re-Schedule it in RAM
|
//Re-Schedule it in RAM
|
||||||
await this.scheduleMedia(wasPlaying, null, chanDB, true, true);
|
await this.scheduleMedia(wasPlaying, null, chanDB, true, true, true);
|
||||||
//Otherwise, if it has
|
//Otherwise, if it has
|
||||||
}else{
|
}else{
|
||||||
//Null out nowPlaying
|
//Null out nowPlaying
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ module.exports = class extends media{
|
||||||
//Set the media start time stamp
|
//Set the media start time stamp
|
||||||
this.startTimeStamp = startTimeStamp;
|
this.startTimeStamp = startTimeStamp;
|
||||||
//Create empty variable to hold early end if media is stopped early
|
//Create empty variable to hold early end if media is stopped early
|
||||||
this.earlyEnd = null;
|
this.earlyEnd = earlyEnd;
|
||||||
//Set status for discriminator key
|
//Set status for discriminator key
|
||||||
this.status = 'queued';
|
this.status = 'queued';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ const emoteModel = require('../emoteSchema');
|
||||||
const channelPermissionSchema = require('./channelPermissionSchema');
|
const channelPermissionSchema = require('./channelPermissionSchema');
|
||||||
const channelBanSchema = require('./channelBanSchema');
|
const channelBanSchema = require('./channelBanSchema');
|
||||||
const queuedMediaSchema = require('./media/queuedMediaSchema');
|
const queuedMediaSchema = require('./media/queuedMediaSchema');
|
||||||
|
const playlistSchema = require('./media/playlistSchema');
|
||||||
//Utils
|
//Utils
|
||||||
const { exceptionHandler, errorHandler } = require('../../utils/loggerUtils');
|
const { exceptionHandler, errorHandler } = require('../../utils/loggerUtils');
|
||||||
|
|
||||||
|
|
@ -102,7 +103,9 @@ const channelSchema = new mongoose.Schema({
|
||||||
media: {
|
media: {
|
||||||
nowPlaying: queuedMediaSchema,
|
nowPlaying: queuedMediaSchema,
|
||||||
scheduled: [queuedMediaSchema],
|
scheduled: [queuedMediaSchema],
|
||||||
|
//We should consider moving archived media and channel playlists to their own collections/models for preformance sake
|
||||||
archived: [queuedMediaSchema],
|
archived: [queuedMediaSchema],
|
||||||
|
playlists: [playlistSchema]
|
||||||
},
|
},
|
||||||
//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
|
//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]
|
banList: [channelBanSchema]
|
||||||
|
|
|
||||||
34
src/schemas/channel/media/playlistSchema.js
Normal file
34
src/schemas/channel/media/playlistSchema.js
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*Canopy - The next generation of stoner streaming software
|
||||||
|
Copyright (C) 2024-2025 Rainbownapkin and the TTN Community
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
|
||||||
|
|
||||||
|
//NPM Imports
|
||||||
|
const {mongoose} = require('mongoose');
|
||||||
|
|
||||||
|
//Local Imports
|
||||||
|
const mediaSchema = require('./mediaSchema');
|
||||||
|
|
||||||
|
module.exports = new mongoose.Schema({
|
||||||
|
name: {
|
||||||
|
type: mongoose.SchemaTypes.String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
media: [mediaSchema],
|
||||||
|
defaultTitles:[{
|
||||||
|
type: mongoose.SchemaTypes.String,
|
||||||
|
required: true,
|
||||||
|
default: []
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
@ -37,6 +37,7 @@ const queuedProperties = new mongoose.Schema({
|
||||||
uuid: {
|
uuid: {
|
||||||
type: mongoose.SchemaTypes.UUID,
|
type: mongoose.SchemaTypes.UUID,
|
||||||
required: true,
|
required: true,
|
||||||
|
unique: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -535,7 +535,7 @@ div.now-playing{
|
||||||
text-shadow: var(--focus-glow0);
|
text-shadow: var(--focus-glow0);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.archived{
|
div.archived p{
|
||||||
color: var(--bg2-alt1);
|
color: var(--bg2-alt1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue