66 lines
2 KiB
JavaScript
66 lines
2 KiB
JavaScript
/*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');
|
|
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'
|
|
});
|
|
|
|
//Methods
|
|
//Rehydrate to a full phat queued media object
|
|
queuedProperties.methods.rehydrate = function(){
|
|
return new queuedMedia(
|
|
this.title,
|
|
this.fileName,
|
|
this.url,
|
|
this.id,
|
|
this.type,
|
|
this.duration,
|
|
//We don't save raw links that are stored seperate from the standard URL as they tend to expire.
|
|
undefined,
|
|
this.startTime,
|
|
this.startTimeStamp,
|
|
this.earlyEnd,
|
|
this.uuid.toString()
|
|
);
|
|
}
|
|
|
|
//Export schema under the 'queued' discriminator of mediaSchema
|
|
module.exports = mediaSchema.discriminator('queued', queuedProperties); |