/*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 .*/ //NPM Imports const {mongoose} = require('mongoose'); //Local Imports const mediaSchema = require('./mediaSchema'); const queuedMedia = require('../../../app/channel/media/queuedMedia'); /** * DB Schema for documents representing a queued media object */ 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 * @returns {queuedMedia} A full phat queued media object, re-hydrated from the DB */ 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);