Browse Source

feat: add a job to get all youtubeIds from all playlists of a user

Kristian Vos 1 year ago
parent
commit
078ff6f9f8
1 changed files with 28 additions and 0 deletions
  1. 28 0
      backend/logic/playlists.js

+ 28 - 0
backend/logic/playlists.js

@@ -159,6 +159,34 @@ class _PlaylistsModule extends CoreClass {
 		});
 	}
 
+	/**
+	 * Returns a list of youtube ids in all user playlists of the specified user
+	 *
+	 * @param {object} payload - object that contains the payload
+	 * @param {string} payload.userId - the user id
+	 * @returns {Promise} - returns promise (reject, resolve)
+	 */
+	GET_SONG_YOUTUBE_IDS_FROM_PLAYLISTS(payload) {
+		return new Promise((resolve, reject) => {
+			PlaylistsModule.playlistModel.find({ createdBy: payload.userId }, (err, playlists) => {
+				const youtubeIds = new Set();
+
+				if (err) reject(err);
+				else {
+					playlists.forEach(playlist => {
+						playlist.songs.forEach(song => {
+							youtubeIds.add(song.youtubeId);
+						});
+					});
+
+					console.log(Array.from(youtubeIds));
+
+					resolve({ youtubeIds: Array.from(youtubeIds) });
+				}
+			});
+		});
+	}
+
 	/**
 	 * Creates a playlist owned by a user
 	 *