Created playlist queue schema.

This commit is contained in:
rainbow napkin 2025-02-15 18:33:07 -05:00
parent 8a273d8055
commit cb09c139c7
6 changed files with 43 additions and 5 deletions

View file

@ -644,8 +644,8 @@ module.exports = class{
//Get our channel
const chanDB = await channelModel.findOne({name: this.channel.name});
//If nowPlaying isn't null
if(chanDB.media.nowPlaying != null){
//If nowPlaying isn't null and isn't what we're about to throw on
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
chanDB.media.archived.push(chanDB.media.nowPlaying);
}
@ -935,7 +935,7 @@ module.exports = class{
//If the media hasn't ended yet
if(wasPlaying.getEndTime() > now){
//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
}else{
//Null out nowPlaying

View file

@ -26,7 +26,7 @@ module.exports = class extends media{
//Set the media start time stamp
this.startTimeStamp = startTimeStamp;
//Create empty variable to hold early end if media is stopped early
this.earlyEnd = null;
this.earlyEnd = earlyEnd;
//Set status for discriminator key
this.status = 'queued';

View file

@ -30,6 +30,7 @@ const emoteModel = require('../emoteSchema');
const channelPermissionSchema = require('./channelPermissionSchema');
const channelBanSchema = require('./channelBanSchema');
const queuedMediaSchema = require('./media/queuedMediaSchema');
const playlistSchema = require('./media/playlistSchema');
//Utils
const { exceptionHandler, errorHandler } = require('../../utils/loggerUtils');
@ -102,7 +103,9 @@ const channelSchema = new mongoose.Schema({
media: {
nowPlaying: queuedMediaSchema,
scheduled: [queuedMediaSchema],
//We should consider moving archived media and channel playlists to their own collections/models for preformance sake
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
banList: [channelBanSchema]

View 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: []
}]
});

View file

@ -37,6 +37,7 @@ const queuedProperties = new mongoose.Schema({
uuid: {
type: mongoose.SchemaTypes.UUID,
required: true,
unique: true
}
},
{

View file

@ -535,7 +535,7 @@ div.now-playing{
text-shadow: var(--focus-glow0);
}
div.archived{
div.archived p{
color: var(--bg2-alt1);
}