From ec37c2f59d4af931ca6ea2f3fde713524d1e8fb7 Mon Sep 17 00:00:00 2001 From: rainbow napkin Date: Mon, 1 Sep 2025 23:14:16 -0400 Subject: [PATCH] Finished JSDoc for src/schemas/channel/media --- src/schemas/channel/media/mediaSchema.js | 3 +++ .../channel/media/playlistMediaSchema.js | 16 ++++++++++-- src/schemas/channel/media/playlistSchema.js | 25 +++++++++++++++++++ .../channel/media/queuedMediaSchema.js | 8 +++++- 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/schemas/channel/media/mediaSchema.js b/src/schemas/channel/media/mediaSchema.js index a781e54..4b5608f 100644 --- a/src/schemas/channel/media/mediaSchema.js +++ b/src/schemas/channel/media/mediaSchema.js @@ -17,6 +17,9 @@ along with this program. If not, see .*/ //NPM Imports const {mongoose} = require('mongoose'); +/** + * DB Schema representing a single piece of media + */ const mediaSchema = new mongoose.Schema({ title: { type: mongoose.SchemaTypes.String, diff --git a/src/schemas/channel/media/playlistMediaSchema.js b/src/schemas/channel/media/playlistMediaSchema.js index c1a2101..4a61829 100644 --- a/src/schemas/channel/media/playlistMediaSchema.js +++ b/src/schemas/channel/media/playlistMediaSchema.js @@ -21,6 +21,9 @@ const {mongoose} = require('mongoose'); const mediaSchema = require('./mediaSchema'); const media = require('../../../app/channel/media/media'); +/** + * DB Schema for documents represnting a piece of media held in a playlist + */ const playlistMediaProperties = new mongoose.Schema({ uuid: { type: mongoose.SchemaTypes.UUID, @@ -33,6 +36,9 @@ const playlistMediaProperties = new mongoose.Schema({ }); //Schema Middleware +/** + * Pre-save function for playlist meda, ensures unique UUID + */ playlistMediaProperties.pre('save', async function (next){ //If the UUID was modified in anyway if(this.isModified("uuid")){ @@ -45,7 +51,10 @@ playlistMediaProperties.pre('save', async function (next){ }); //methods -//Rehydrate to a full phat media object +/** + * Rehydrate to a full phat media object + * @returns {media} A full phat media object, re-hydrated from the DB + */ playlistMediaProperties.methods.rehydrate = function(){ //Return item as a full phat, standard media object return new media( @@ -58,7 +67,10 @@ playlistMediaProperties.methods.rehydrate = function(){ ); } -//Dehydrate to minified flat network-friendly object +/** + * Dehydrate to minified flat network-friendly object + * @returns {Object} Network-Friendly Browser-Digestable object representing media from a playlist + */ playlistMediaProperties.methods.dehydrate = function(){ return { title: this.title, diff --git a/src/schemas/channel/media/playlistSchema.js b/src/schemas/channel/media/playlistSchema.js index f17a4e1..e78ce9e 100644 --- a/src/schemas/channel/media/playlistSchema.js +++ b/src/schemas/channel/media/playlistSchema.js @@ -20,6 +20,9 @@ const {mongoose} = require('mongoose'); //Local Imports const playlistMediaSchema = require('./playlistMediaSchema'); +/** + * DB Schema for Documents representing playlists full of media + */ const playlistSchema = new mongoose.Schema({ name: { type: mongoose.SchemaTypes.String, @@ -34,6 +37,10 @@ const playlistSchema = new mongoose.Schema({ }); //methods +/** + * Dehydrate to minified flat network-friendly object + * @returns {Object} Network-Friendly Browser-Digestable object representing media from a playlist + */ playlistSchema.methods.dehydrate = function(){ //Create empty array to hold media const mediaArray = []; @@ -51,6 +58,10 @@ playlistSchema.methods.dehydrate = function(){ } } +/** + * Add media to the given playlist Document + * @param {Array} mediaList - Array of media Objects to add to playlist + */ playlistSchema.methods.addMedia = function(mediaList){ //For every piece of media in the list for(let media of mediaList){ @@ -62,6 +73,11 @@ playlistSchema.methods.addMedia = function(mediaList){ } } +/** + * Gets Media from a playlist by UUID + * @param {String} uuid - UUID of media to pull + * @returns {media} media with matching UUID + */ playlistSchema.methods.findMediaByUUID = function(uuid){ //For every piece of media in the current playlist for(let media of this.media){ @@ -73,6 +89,10 @@ playlistSchema.methods.findMediaByUUID = function(uuid){ } } +/** + * Deletes media from a given playlist + * @param {String} uuid - UUID of media to delete + */ playlistSchema.methods.deleteMedia = function(uuid){ //Create new array to hold list of media to be kept const keptMedia = []; @@ -90,6 +110,11 @@ playlistSchema.methods.deleteMedia = function(uuid){ this.media = keptMedia; } +/** + * Pick title based on default title's list and media's given title + * @param {String} title - Title to use if there are no default titles. + * @returns {String} Chosen title based on result of function + */ playlistSchema.methods.pickDefaultTitle = function(title){ //If we don't have default titles in this playlist if(this.defaultTitles.length <= 0){ diff --git a/src/schemas/channel/media/queuedMediaSchema.js b/src/schemas/channel/media/queuedMediaSchema.js index e5fbfc2..b75e2d9 100644 --- a/src/schemas/channel/media/queuedMediaSchema.js +++ b/src/schemas/channel/media/queuedMediaSchema.js @@ -21,6 +21,9 @@ const {mongoose} = require('mongoose'); 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, @@ -44,7 +47,10 @@ const queuedProperties = new mongoose.Schema({ }); //Methods -//Rehydrate to a full phat queued media object +/** + * 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,