Fixed: Cleanup orphaned import list movies by movie metadata

This commit is contained in:
Bogdan 2023-12-17 22:59:47 +02:00
parent c8d30fd214
commit 119cdf6f09
2 changed files with 29 additions and 5 deletions

View File

@ -4,6 +4,7 @@ using NUnit.Framework;
using NzbDrone.Core.Housekeeping.Housekeepers;
using NzbDrone.Core.ImportLists;
using NzbDrone.Core.ImportLists.ImportListMovies;
using NzbDrone.Core.Movies;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
@ -42,8 +43,13 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
GivenImportList();
var movieMetadata = Builder<MovieMetadata>.CreateNew().BuildNew();
Db.Insert(movieMetadata);
var status = Builder<ImportListMovie>.CreateNew()
.With(h => h.ListId = _importList.Id)
.With(b => b.MovieMetadataId = movieMetadata.Id)
.BuildNew();
Db.Insert(status);

View File

@ -13,15 +13,33 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
}
public void Clean()
{
CleanupOrphanedByImportLists();
CleanupOrphanedByMovieMetadata();
}
private void CleanupOrphanedByImportLists()
{
using var mapper = _database.OpenConnection();
mapper.Execute(@"DELETE FROM ""ImportListMovies""
WHERE ""Id"" IN (
SELECT ""ImportListMovies"".""Id"" FROM ""ImportListMovies""
LEFT OUTER JOIN ""ImportLists""
ON ""ImportListMovies"".""ListId"" = ""ImportLists"".""Id""
WHERE ""ImportLists"".""Id"" IS NULL)");
WHERE ""Id"" IN (
SELECT ""ImportListMovies"".""Id""
FROM ""ImportListMovies""
LEFT OUTER JOIN ""ImportLists"" ON ""ImportListMovies"".""ListId"" = ""ImportLists"".""Id""
WHERE ""ImportLists"".""Id"" IS NULL)");
}
private void CleanupOrphanedByMovieMetadata()
{
using var mapper = _database.OpenConnection();
mapper.Execute(@"DELETE FROM ""ImportListMovies""
WHERE ""Id"" IN (
SELECT ""ImportListMovies"".""Id""
FROM ""ImportListMovies""
LEFT OUTER JOIN ""MovieMetadata"" ON ""ImportListMovies"".""MovieMetadataId"" = ""MovieMetadata"".""Id""
WHERE ""MovieMetadata"".""Id"" IS NULL)");
}
}
}