Files
Readarr/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupDuplicateMetadataFiles.cs
T
Robin Dadswell 46c2e0ba82 New: Postgres Support
Co-Authored-By: Qstick <376117+Qstick@users.noreply.github.com>
Co-authored-by: ta264 <ta264@users.noreply.github.com>

(cherry picked from commit 80b1aa9a2c81617bdda7ef551c19a2f114e49204)
2022-08-13 19:55:48 +01:00

65 lines
2.3 KiB
C#

using Dapper;
using NzbDrone.Core.Datastore;
namespace NzbDrone.Core.Housekeeping.Housekeepers
{
public class CleanupDuplicateMetadataFiles : IHousekeepingTask
{
private readonly IMainDatabase _database;
public CleanupDuplicateMetadataFiles(IMainDatabase database)
{
_database = database;
}
public void Clean()
{
DeleteDuplicateAuthorMetadata();
DeleteDuplicateBookMetadata();
DeleteDuplicateBookFileMetadata();
}
private void DeleteDuplicateAuthorMetadata()
{
using (var mapper = _database.OpenConnection())
{
mapper.Execute(@"DELETE FROM ""MetadataFiles""
WHERE ""Id"" IN (
SELECT MIN(""Id"") FROM ""MetadataFiles""
WHERE ""Type"" = 1
GROUP BY ""AuthorId"", ""Consumer""
HAVING COUNT(""AuthorId"") > 1
)");
}
}
private void DeleteDuplicateBookMetadata()
{
using (var mapper = _database.OpenConnection())
{
mapper.Execute(@"DELETE FROM ""MetadataFiles""
WHERE ""Id"" IN (
SELECT MIN(""Id"") FROM ""MetadataFiles""
WHERE ""Type"" IN (2, 4)
GROUP BY ""BookId"", ""Consumer""
HAVING COUNT(""BookId"") > 1
)");
}
}
private void DeleteDuplicateBookFileMetadata()
{
using (var mapper = _database.OpenConnection())
{
mapper.Execute(@"DELETE FROM ""MetadataFiles""
WHERE ""Id"" IN (
SELECT MIN(""Id"") FROM ""MetadataFiles""
WHERE ""Type"" IN (2, 4)
GROUP BY ""BookFileId"", ""Consumer""
HAVING COUNT(""BookFileId"") > 1
)");
}
}
}
}