Lidarr/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedMetadataFile...

90 lines
3.4 KiB
C#
Raw Normal View History

2020-08-18 20:11:44 +00:00
using Dapper;
using NzbDrone.Core.Datastore;
2014-01-26 07:14:55 +00:00
namespace NzbDrone.Core.Housekeeping.Housekeepers
{
public class CleanupOrphanedMetadataFiles : IHousekeepingTask
{
private readonly IMainDatabase _database;
2014-01-26 07:14:55 +00:00
public CleanupOrphanedMetadataFiles(IMainDatabase database)
2014-01-26 07:14:55 +00:00
{
_database = database;
}
public void Clean()
{
DeleteOrphanedByArtist();
DeleteOrphanedByAlbum();
DeleteOrphanedByTrackFile();
DeleteWhereAlbumIdIsZero();
DeleteWhereTrackFileIsZero();
2014-01-26 07:14:55 +00:00
}
private void DeleteOrphanedByArtist()
2014-01-26 07:14:55 +00:00
{
2020-08-18 20:11:44 +00:00
using (var mapper = _database.OpenConnection())
{
mapper.Execute(@"DELETE FROM ""MetadataFiles""
WHERE ""Id"" IN (
SELECT ""MetadataFiles"".""Id"" FROM ""MetadataFiles""
LEFT OUTER JOIN ""Artists""
ON ""MetadataFiles"".""ArtistId"" = ""Artists"".""Id""
WHERE ""Artists"".""Id"" IS NULL)");
2020-08-18 20:11:44 +00:00
}
2014-01-26 07:14:55 +00:00
}
private void DeleteOrphanedByAlbum()
2014-01-26 07:14:55 +00:00
{
2020-08-18 20:11:44 +00:00
using (var mapper = _database.OpenConnection())
{
mapper.Execute(@"DELETE FROM ""MetadataFiles""
WHERE ""Id"" IN (
SELECT ""MetadataFiles"".""Id"" FROM ""MetadataFiles""
LEFT OUTER JOIN ""Albums""
ON ""MetadataFiles"".""AlbumId"" = ""Albums"".""Id""
WHERE ""MetadataFiles"".""AlbumId"" > 0
AND ""Albums"".""Id"" IS NULL)");
2020-08-18 20:11:44 +00:00
}
2014-01-26 07:14:55 +00:00
}
private void DeleteOrphanedByTrackFile()
{
2020-08-18 20:11:44 +00:00
using (var mapper = _database.OpenConnection())
{
mapper.Execute(@"DELETE FROM ""MetadataFiles""
WHERE ""Id"" IN (
SELECT ""MetadataFiles"".""Id"" FROM ""MetadataFiles""
LEFT OUTER JOIN ""TrackFiles""
ON ""MetadataFiles"".""TrackFileId"" = ""TrackFiles"".""Id""
WHERE ""MetadataFiles"".""TrackFileId"" > 0
AND ""TrackFiles"".""Id"" IS NULL)");
2020-08-18 20:11:44 +00:00
}
}
private void DeleteWhereAlbumIdIsZero()
{
2020-08-18 20:11:44 +00:00
using (var mapper = _database.OpenConnection())
{
mapper.Execute(@"DELETE FROM ""MetadataFiles""
WHERE ""Id"" IN (
SELECT ""Id"" FROM ""MetadataFiles""
WHERE ""Type"" IN (4, 6)
AND ""AlbumId"" = 0)");
2020-08-18 20:11:44 +00:00
}
}
private void DeleteWhereTrackFileIsZero()
{
2020-08-18 20:11:44 +00:00
using (var mapper = _database.OpenConnection())
{
mapper.Execute(@"DELETE FROM ""MetadataFiles""
WHERE ""Id"" IN (
SELECT ""Id"" FROM ""MetadataFiles""
WHERE ""Type"" IN (2, 5)
AND ""TrackFileId"" = 0)");
2020-08-18 20:11:44 +00:00
}
}
2014-01-26 07:14:55 +00:00
}
}