Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- db.fetchSeriesWithJoins = async function(callback) {
- let query = `SELECT
- ser.id 'series_id',
- ser.director 'director',
- ser.genre 'genre',
- ser.name 'name',
- ser.year 'year',
- sea.airDate 'season_airDate',
- sea.id 'season_id',
- sea.seasonNumber 'seasonNumber',
- sea.seriesID 'seriesID',
- epi.airDate 'episode_airDate',
- epi.episodeNumber 'episodeNumber',
- epi.id 'episode_id',
- epi.seasonID 'ep_seasonID'
- FROM
- series ser
- JOIN seasons sea JOIN episodes epi WHERE
- ser.id = sea.seriesID AND sea.id = epi.seasonID`;
- let rows = await executeQueryWithPromise(query)
- console.log("TCL: rows", rows.length)
- let series = {};
- let seasons = {};
- let episodes = {};
- let series_count = 0;
- const setObj = (newentry, keyname, obj) => obj[keyname] = newentry;
- //set series object amount with seriesID key
- for (let i = 0; i < rows.length; i++) {
- let row = rows[i]
- //first assignment of object with series data
- if (Object.keys(series).length < row.seriesID) {
- setObj({
- seriesID: row.seriesID,
- director: row.director,
- genre: row.genre,
- year: row.year,
- seasons: []
- }, row.seriesID, series)
- }
- if (Object.keys(seasons).length < row.season_id) {
- setObj({
- season_id: row.season_id,
- seasonNumber: row.seasonNumber,
- seriesID: row.seriesID
- }, row.season_id, seasons)
- }
- if (Object.keys(episodes).length < row.episode_id) {
- setObj({
- episode_airDate: row.episode_airDate,
- episodeNumber: row.episodeNumber,
- episode_id: row.episode_id,
- ep_seasonID: row.ep_seasonID
- }, row.episode_id, episodes)
- }
- }
- for (const episode_id in episodes) {
- if (episodes.hasOwnProperty(episode_id)) {
- const episode = episodes[episode_id];
- if (seasons.hasOwnProperty(episode.ep_seasonID)) {
- seasons[episode.ep_seasonID].episodes = seasons[episode.ep_seasonID].episodes || []
- seasons[episode.ep_seasonID].episodes.push(episode);
- }
- }
- }
- for (const season_id in seasons) {
- if (seasons.hasOwnProperty(season_id)) {
- const season = seasons[season_id];
- if (series.hasOwnProperty(season.seriesID)) {
- series[season.seriesID].seasons.push(season);
- }
- }
- }
- return { series: series /*, seasons: seasons*/ , episodes: episodes }
- };
Advertisement
Add Comment
Please, Sign In to add comment