From c7c9eaf74cb0edc7facea961d3d303c87f1bb516 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Fri, 25 Sep 2020 13:38:47 +0200 Subject: [PATCH] Clean up relationships --- src/metadata_loader.js | 12 ++++++------ src/storage.js | 30 ++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/metadata_loader.js b/src/metadata_loader.js index 3229e2b..9866279 100644 --- a/src/metadata_loader.js +++ b/src/metadata_loader.js @@ -168,12 +168,12 @@ class MetadataLoader { const showTitle = await Title.findByPk(ids.uuid); const [mapping] = await TitleEpisode.findOrBuild({ where: { - parent_id: showTitle.id, + show_id: showTitle.id, season_number: episodeIdentifier.season, episode_number: episodeIdentifier.episode, }, defaults: { - episode_id: uuidv4, + episode_id: uuidv4(), } }) const [episodeTitle] = await Title.upsert({ @@ -185,10 +185,10 @@ class MetadataLoader { runtime: imdbResult.runtime, }, {returning: true}); mapping.air_date = tmdbResult.air_date; - await mapping.setParent(showTitle, {save: false}); - await mapping.save(); - await episodeTitle.setParent(mapping, { save: false}); await episodeTitle.save(); + await mapping.setEpisode(episodeTitle, {save: false}); + await mapping.setShow(showTitle, {save: false}); + await mapping.save(); await TitleName.destroy({ where: { title_id: episodeTitle.id, @@ -475,7 +475,7 @@ class MetadataLoader { const isShow = titleType === "tvSeries"; const fanartSource = isShow ? - `tv/${ids.tmdb}` : + `tv/${ids.tvdb}` : `movies/${ids.tmdb}`; const [ diff --git a/src/storage.js b/src/storage.js index 16f7570..fe9b3bb 100644 --- a/src/storage.js +++ b/src/storage.js @@ -170,7 +170,7 @@ class Backend { indexes: [ { fields: [ - 'parent_id', + 'show_id', { attribute: 'season_number', collate: 'C', @@ -186,7 +186,7 @@ class Backend { { using: 'BTREE', fields: [ - 'parent_id', + 'show_id', { attribute: 'air_date', order: 'ASC', @@ -196,19 +196,33 @@ class Backend { ] }); TitleEpisode.belongsTo(Title, { - as: "Parent", + as: "Show", foreignKey: { - name: "parent_id", + name: "show_id", allowNull: false, } - }) + }); + TitleEpisode.belongsTo(Title, { + as: "Episode", + foreignKey: { + name: "episode_id", + allowNull: false, + } + }); Title.hasMany(TitleEpisode, { - as: "Parent", + as: "Show", foreignKey: { - name: "parent_id", + name: "show_id", allowNull: true, } - }) + }); + Title.hasOne(TitleEpisode, { + as: "Episode", + foreignKey: { + name: "episode_id", + allowNull: true, + } + }); TitleGenre.init({ id: { type: sequelize.DataTypes.UUID, -- GitLab