AviEzerzer

Untitled

Aug 14th, 2019
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.    db.fetchSeriesWithJoins = async function(callback) {
  2.         let query = `SELECT
  3.         ser.id 'series_id',
  4.         ser.director 'director',
  5.         ser.genre 'genre',
  6.         ser.name 'name',
  7.         ser.year 'year',
  8.         sea.airDate 'season_airDate',
  9.         sea.id 'season_id',
  10.         sea.seasonNumber 'seasonNumber',
  11.         sea.seriesID 'seriesID',
  12.         epi.airDate 'episode_airDate',
  13.         epi.episodeNumber 'episodeNumber',
  14.         epi.id 'episode_id',
  15.         epi.seasonID 'ep_seasonID'
  16.     FROM
  17.         series ser
  18.     JOIN seasons sea JOIN episodes epi WHERE
  19.         ser.id = sea.seriesID AND sea.id = epi.seasonID`;
  20.  
  21.         let rows = await executeQueryWithPromise(query)
  22.         console.log("TCL: rows", rows.length)
  23.  
  24.         let series = {};
  25.         let seasons = {};
  26.         let episodes = {};
  27.         let series_count = 0;
  28.  
  29.         const setObj = (newentry, keyname, obj) => obj[keyname] = newentry;
  30.  
  31.         //set series object amount with seriesID key
  32.         for (let i = 0; i < rows.length; i++) {
  33.             let row = rows[i]
  34.                 //first assignment of object with series data
  35.             if (Object.keys(series).length < row.seriesID) {
  36.                 setObj({
  37.                     seriesID: row.seriesID,
  38.                     director: row.director,
  39.                     genre: row.genre,
  40.                     year: row.year,
  41.                     seasons: []
  42.                 }, row.seriesID, series)
  43.             }
  44.             if (Object.keys(seasons).length < row.season_id) {
  45.                 setObj({
  46.                     season_id: row.season_id,
  47.                     seasonNumber: row.seasonNumber,
  48.                     seriesID: row.seriesID
  49.                 }, row.season_id, seasons)
  50.             }
  51.             if (Object.keys(episodes).length < row.episode_id) {
  52.                 setObj({
  53.                     episode_airDate: row.episode_airDate,
  54.                     episodeNumber: row.episodeNumber,
  55.                     episode_id: row.episode_id,
  56.                     ep_seasonID: row.ep_seasonID
  57.                 }, row.episode_id, episodes)
  58.             }
  59.         }
  60.  
  61.  
  62.         for (const episode_id in episodes) {
  63.             if (episodes.hasOwnProperty(episode_id)) {
  64.                 const episode = episodes[episode_id];
  65.                 if (seasons.hasOwnProperty(episode.ep_seasonID)) {
  66.                     seasons[episode.ep_seasonID].episodes = seasons[episode.ep_seasonID].episodes || []
  67.                     seasons[episode.ep_seasonID].episodes.push(episode);
  68.                 }
  69.             }
  70.         }
  71.  
  72.         for (const season_id in seasons) {
  73.             if (seasons.hasOwnProperty(season_id)) {
  74.                 const season = seasons[season_id];
  75.                 if (series.hasOwnProperty(season.seriesID)) {
  76.                     series[season.seriesID].seasons.push(season);
  77.                 }
  78.             }
  79.         }
  80.  
  81.         return { series: series /*, seasons: seasons*/ , episodes: episodes }
  82.     };
Advertisement
Add Comment
Please, Sign In to add comment