Skip to content

Commit

Permalink
Fix duplicate-file SQL queries
Browse files Browse the repository at this point in the history
  • Loading branch information
harshithmohan committed Jan 10, 2025
1 parent c299c67 commit 252cb62
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 30 deletions.
50 changes: 28 additions & 22 deletions Shoko.Server/Repositories/Cached/AnimeEpisodeRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,25 +132,28 @@ public IEnumerable<SVR_AnimeEpisode> GetWithMultipleReleases(bool ignoreVariatio
FROM
(
SELECT
vlp.VideoLocal_Place_ID,
vl.FileSize,
vl.Hash
FROM
VideoLocal AS vl
INNER JOIN
VideoLocal_Place AS vlp
ON vlp.VideoLocalID = vl.VideoLocalID
WHERE
VideoLocalID IN (
SELECT
VideoLocalID
FROM
VideoLocal_Place
GROUP BY
VideoLocalID
HAVING
COUNT(VideoLocal_Place_ID) > 1
)
AND
vl.Hash != ''
GROUP BY
vl.VideoLocalID
HAVING
COUNT(vl.VideoLocalID) > 1
) AS filtered_vlp
) AS vlp_selected
INNER JOIN
CrossRef_File_Episode ani
ON filtered_vlp.Hash = ani.Hash
AND filtered_vlp.FileSize = ani.FileSize
ON vlp_selected.Hash = ani.Hash
AND vlp_selected.FileSize = ani.FileSize
WHERE ani.AnimeID = :animeID
GROUP BY
ani.EpisodeID
Expand All @@ -162,25 +165,28 @@ GROUP BY
FROM
(
SELECT
vlp.VideoLocal_Place_ID,
vl.FileSize,
vl.Hash
FROM
VideoLocal AS vl
INNER JOIN
VideoLocal_Place AS vlp
ON vlp.VideoLocalID = vl.VideoLocalID
WHERE
VideoLocalID IN (
SELECT
VideoLocalID
FROM
VideoLocal_Place
GROUP BY
VideoLocalID
HAVING
COUNT(VideoLocal_Place_ID) > 1
)
AND
vl.Hash != ''
GROUP BY
vl.VideoLocalID
HAVING
COUNT(vl.VideoLocalID) > 1
) AS filtered_vlp
) AS vlp_selected
INNER JOIN
CrossRef_File_Episode ani
ON filtered_vlp.Hash = ani.Hash
AND filtered_vlp.FileSize = ani.FileSize
ON vlp_selected.Hash = ani.Hash
AND vlp_selected.FileSize = ani.FileSize
GROUP BY
ani.EpisodeID
";
Expand Down
19 changes: 11 additions & 8 deletions Shoko.Server/Repositories/Cached/AnimeSeriesRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -348,20 +348,23 @@ SELECT DISTINCT
FROM
(
SELECT
vlp.VideoLocal_Place_ID,
vl.FileSize,
vl.Hash
FROM
VideoLocal AS vl
INNER JOIN
VideoLocal_Place AS vlp
ON vlp.VideoLocalID = vl.VideoLocalID
WHERE
VideoLocalID IN (
SELECT
VideoLocalID
FROM
VideoLocal_Place
GROUP BY
VideoLocalID
HAVING
COUNT(VideoLocal_Place_ID) > 1
)
AND
vl.Hash != ''
GROUP BY
vl.VideoLocalID
HAVING
COUNT(vl.VideoLocalID) > 1
) AS vlp_selected
INNER JOIN
CrossRef_File_Episode ani
Expand Down

0 comments on commit 252cb62

Please sign in to comment.