mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-20 21:43:33 -07:00
parent
e6ceafa03b
commit
038b121c34
18 changed files with 220 additions and 272 deletions
|
@ -14,34 +14,32 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
|
if (_database.DatabaseType == DatabaseType.PostgreSQL)
|
||||||
{
|
{
|
||||||
if (_database.DatabaseType == DatabaseType.PostgreSQL)
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
{
|
WHERE ""Id"" = ANY (
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
SELECT ""Id"" FROM ""MetadataFiles""
|
||||||
WHERE ""Id"" = ANY (
|
WHERE ""RelativePath""
|
||||||
SELECT ""Id"" FROM ""MetadataFiles""
|
LIKE '_:\\%'
|
||||||
WHERE ""RelativePath""
|
OR ""RelativePath""
|
||||||
LIKE '_:\\%'
|
LIKE '\\%'
|
||||||
OR ""RelativePath""
|
OR ""RelativePath""
|
||||||
LIKE '\\%'
|
LIKE '/%'
|
||||||
OR ""RelativePath""
|
)");
|
||||||
LIKE '/%'
|
}
|
||||||
)");
|
else
|
||||||
}
|
{
|
||||||
else
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
{
|
WHERE ""Id"" IN (
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
SELECT ""Id"" FROM ""MetadataFiles""
|
||||||
WHERE ""Id"" IN (
|
WHERE ""RelativePath""
|
||||||
SELECT ""Id"" FROM ""MetadataFiles""
|
LIKE '_:\%'
|
||||||
WHERE ""RelativePath""
|
OR ""RelativePath""
|
||||||
LIKE '_:\%'
|
LIKE '\%'
|
||||||
OR ""RelativePath""
|
OR ""RelativePath""
|
||||||
LIKE '\%'
|
LIKE '/%'
|
||||||
OR ""RelativePath""
|
)");
|
||||||
LIKE '/%'
|
|
||||||
)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,13 +14,11 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""NamingConfig""
|
||||||
mapper.Execute(@"DELETE FROM ""NamingConfig""
|
WHERE ""Id"" NOT IN (
|
||||||
WHERE ""Id"" NOT IN (
|
SELECT ""Id"" FROM ""NamingConfig""
|
||||||
SELECT ""Id"" FROM ""NamingConfig""
|
LIMIT 1)");
|
||||||
LIMIT 1)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,13 +14,11 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""Users""
|
||||||
mapper.Execute(@"DELETE FROM ""Users""
|
WHERE ""Id"" NOT IN (
|
||||||
WHERE ""Id"" NOT IN (
|
SELECT ""Id"" FROM ""Users""
|
||||||
SELECT ""Id"" FROM ""Users""
|
LIMIT 1)");
|
||||||
LIMIT 1)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,58 +22,50 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
private void DeleteDuplicateArtistMetadata()
|
private void DeleteDuplicateArtistMetadata()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT MIN(""Id"") FROM ""MetadataFiles""
|
||||||
SELECT MIN(""Id"") FROM ""MetadataFiles""
|
WHERE ""Type"" = 1
|
||||||
WHERE ""Type"" = 1
|
GROUP BY ""ArtistId"", ""Consumer""
|
||||||
GROUP BY ""ArtistId"", ""Consumer""
|
HAVING COUNT(""ArtistId"") > 1
|
||||||
HAVING COUNT(""ArtistId"") > 1
|
)");
|
||||||
)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteDuplicateAlbumMetadata()
|
private void DeleteDuplicateAlbumMetadata()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT MIN(""Id"") FROM ""MetadataFiles""
|
||||||
SELECT MIN(""Id"") FROM ""MetadataFiles""
|
WHERE ""Type"" = 6
|
||||||
WHERE ""Type"" = 6
|
GROUP BY ""AlbumId"", ""Consumer""
|
||||||
GROUP BY ""AlbumId"", ""Consumer""
|
HAVING COUNT(""AlbumId"") > 1
|
||||||
HAVING COUNT(""AlbumId"") > 1
|
)");
|
||||||
)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteDuplicateTrackMetadata()
|
private void DeleteDuplicateTrackMetadata()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT MIN(""Id"") FROM ""MetadataFiles""
|
||||||
SELECT MIN(""Id"") FROM ""MetadataFiles""
|
WHERE ""Type"" = 2
|
||||||
WHERE ""Type"" = 2
|
GROUP BY ""TrackFileId"", ""Consumer""
|
||||||
GROUP BY ""TrackFileId"", ""Consumer""
|
HAVING COUNT(""TrackFileId"") > 1
|
||||||
HAVING COUNT(""TrackFileId"") > 1
|
)");
|
||||||
)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteDuplicateTrackImages()
|
private void DeleteDuplicateTrackImages()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT MIN(""Id"") FROM ""MetadataFiles""
|
||||||
SELECT MIN(""Id"") FROM ""MetadataFiles""
|
WHERE ""Type"" = 5
|
||||||
WHERE ""Type"" = 5
|
GROUP BY ""TrackFileId"", ""Consumer""
|
||||||
GROUP BY ""TrackFileId"", ""Consumer""
|
HAVING COUNT(""TrackFileId"") > 1
|
||||||
HAVING COUNT(""TrackFileId"") > 1
|
)");
|
||||||
)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,13 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""Albums""
|
||||||
mapper.Execute(@"DELETE FROM ""Albums""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""Albums"".""Id"" FROM ""Albums""
|
||||||
SELECT ""Albums"".""Id"" FROM ""Albums""
|
LEFT OUTER JOIN ""Artists""
|
||||||
LEFT OUTER JOIN ""Artists""
|
ON ""Albums"".""ArtistMetadataId"" = ""Artists"".""ArtistMetadataId""
|
||||||
ON ""Albums"".""ArtistMetadataId"" = ""Artists"".""ArtistMetadataId""
|
WHERE ""Artists"".""Id"" IS NULL)");
|
||||||
WHERE ""Artists"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,16 +14,14 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""ArtistMetadata""
|
||||||
mapper.Execute(@"DELETE FROM ""ArtistMetadata""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""ArtistMetadata"".""Id"" FROM ""ArtistMetadata""
|
||||||
SELECT ""ArtistMetadata"".""Id"" FROM ""ArtistMetadata""
|
LEFT OUTER JOIN ""Albums"" ON ""Albums"".""ArtistMetadataId"" = ""ArtistMetadata"".""Id""
|
||||||
LEFT OUTER JOIN ""Albums"" ON ""Albums"".""ArtistMetadataId"" = ""ArtistMetadata"".""Id""
|
LEFT OUTER JOIN ""Tracks"" ON ""Tracks"".""ArtistMetadataId"" = ""ArtistMetadata"".""Id""
|
||||||
LEFT OUTER JOIN ""Tracks"" ON ""Tracks"".""ArtistMetadataId"" = ""ArtistMetadata"".""Id""
|
LEFT OUTER JOIN ""Artists"" ON ""Artists"".""ArtistMetadataId"" = ""ArtistMetadata"".""Id""
|
||||||
LEFT OUTER JOIN ""Artists"" ON ""Artists"".""ArtistMetadataId"" = ""ArtistMetadata"".""Id""
|
WHERE ""Albums"".""Id"" IS NULL AND ""Tracks"".""Id"" IS NULL AND ""Artists"".""Id"" IS NULL)");
|
||||||
WHERE ""Albums"".""Id"" IS NULL AND ""Tracks"".""Id"" IS NULL AND ""Artists"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,13 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""Blocklist""
|
||||||
mapper.Execute(@"DELETE FROM ""Blocklist""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""Blocklist"".""Id"" FROM ""Blocklist""
|
||||||
SELECT ""Blocklist"".""Id"" FROM ""Blocklist""
|
LEFT OUTER JOIN ""Artists""
|
||||||
LEFT OUTER JOIN ""Artists""
|
ON ""Blocklist"".""ArtistId"" = ""Artists"".""Id""
|
||||||
ON ""Blocklist"".""ArtistId"" = ""Artists"".""Id""
|
WHERE ""Artists"".""Id"" IS NULL)");
|
||||||
WHERE ""Artists"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,13 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""DownloadClientStatus""
|
||||||
mapper.Execute(@"DELETE FROM ""DownloadClientStatus""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""DownloadClientStatus"".""Id"" FROM ""DownloadClientStatus""
|
||||||
SELECT ""DownloadClientStatus"".""Id"" FROM ""DownloadClientStatus""
|
LEFT OUTER JOIN ""DownloadClients""
|
||||||
LEFT OUTER JOIN ""DownloadClients""
|
ON ""DownloadClientStatus"".""ProviderId"" = ""DownloadClients"".""Id""
|
||||||
ON ""DownloadClientStatus"".""ProviderId"" = ""DownloadClients"".""Id""
|
WHERE ""DownloadClients"".""Id"" IS NULL)");
|
||||||
WHERE ""DownloadClients"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,28 +20,24 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
private void CleanupOrphanedByArtist()
|
private void CleanupOrphanedByArtist()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""History""
|
||||||
mapper.Execute(@"DELETE FROM ""History""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""History"".""Id"" FROM ""History""
|
||||||
SELECT ""History"".""Id"" FROM ""History""
|
LEFT OUTER JOIN ""Artists""
|
||||||
LEFT OUTER JOIN ""Artists""
|
ON ""History"".""ArtistId"" = ""Artists"".""Id""
|
||||||
ON ""History"".""ArtistId"" = ""Artists"".""Id""
|
WHERE ""Artists"".""Id"" IS NULL)");
|
||||||
WHERE ""Artists"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CleanupOrphanedByAlbum()
|
private void CleanupOrphanedByAlbum()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""History""
|
||||||
mapper.Execute(@"DELETE FROM ""History""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""History"".""Id"" FROM ""History""
|
||||||
SELECT ""History"".""Id"" FROM ""History""
|
LEFT OUTER JOIN ""Albums""
|
||||||
LEFT OUTER JOIN ""Albums""
|
ON ""History"".""AlbumId"" = ""Albums"".""Id""
|
||||||
ON ""History"".""AlbumId"" = ""Albums"".""Id""
|
WHERE ""Albums"".""Id"" IS NULL)");
|
||||||
WHERE ""Albums"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,13 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""ImportListStatus""
|
||||||
mapper.Execute(@"DELETE FROM ""ImportListStatus""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""ImportListStatus"".""Id"" FROM ""ImportListStatus""
|
||||||
SELECT ""ImportListStatus"".""Id"" FROM ""ImportListStatus""
|
LEFT OUTER JOIN ""ImportLists""
|
||||||
LEFT OUTER JOIN ""ImportLists""
|
ON ""ImportListStatus"".""ProviderId"" = ""ImportLists"".""Id""
|
||||||
ON ""ImportListStatus"".""ProviderId"" = ""ImportLists"".""Id""
|
WHERE ""ImportLists"".""Id"" IS NULL)");
|
||||||
WHERE ""ImportLists"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,13 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""IndexerStatus""
|
||||||
mapper.Execute(@"DELETE FROM ""IndexerStatus""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""IndexerStatus"".""Id"" FROM ""IndexerStatus""
|
||||||
SELECT ""IndexerStatus"".""Id"" FROM ""IndexerStatus""
|
LEFT OUTER JOIN ""Indexers""
|
||||||
LEFT OUTER JOIN ""Indexers""
|
ON ""IndexerStatus"".""ProviderId"" = ""Indexers"".""Id""
|
||||||
ON ""IndexerStatus"".""ProviderId"" = ""Indexers"".""Id""
|
WHERE ""Indexers"".""Id"" IS NULL)");
|
||||||
WHERE ""Indexers"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,67 +23,57 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
private void DeleteOrphanedByArtist()
|
private void DeleteOrphanedByArtist()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""MetadataFiles"".""Id"" FROM ""MetadataFiles""
|
||||||
SELECT ""MetadataFiles"".""Id"" FROM ""MetadataFiles""
|
LEFT OUTER JOIN ""Artists""
|
||||||
LEFT OUTER JOIN ""Artists""
|
ON ""MetadataFiles"".""ArtistId"" = ""Artists"".""Id""
|
||||||
ON ""MetadataFiles"".""ArtistId"" = ""Artists"".""Id""
|
WHERE ""Artists"".""Id"" IS NULL)");
|
||||||
WHERE ""Artists"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteOrphanedByAlbum()
|
private void DeleteOrphanedByAlbum()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""MetadataFiles"".""Id"" FROM ""MetadataFiles""
|
||||||
SELECT ""MetadataFiles"".""Id"" FROM ""MetadataFiles""
|
LEFT OUTER JOIN ""Albums""
|
||||||
LEFT OUTER JOIN ""Albums""
|
ON ""MetadataFiles"".""AlbumId"" = ""Albums"".""Id""
|
||||||
ON ""MetadataFiles"".""AlbumId"" = ""Albums"".""Id""
|
WHERE ""MetadataFiles"".""AlbumId"" > 0
|
||||||
WHERE ""MetadataFiles"".""AlbumId"" > 0
|
AND ""Albums"".""Id"" IS NULL)");
|
||||||
AND ""Albums"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteOrphanedByTrackFile()
|
private void DeleteOrphanedByTrackFile()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""MetadataFiles"".""Id"" FROM ""MetadataFiles""
|
||||||
SELECT ""MetadataFiles"".""Id"" FROM ""MetadataFiles""
|
LEFT OUTER JOIN ""TrackFiles""
|
||||||
LEFT OUTER JOIN ""TrackFiles""
|
ON ""MetadataFiles"".""TrackFileId"" = ""TrackFiles"".""Id""
|
||||||
ON ""MetadataFiles"".""TrackFileId"" = ""TrackFiles"".""Id""
|
WHERE ""MetadataFiles"".""TrackFileId"" > 0
|
||||||
WHERE ""MetadataFiles"".""TrackFileId"" > 0
|
AND ""TrackFiles"".""Id"" IS NULL)");
|
||||||
AND ""TrackFiles"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteWhereAlbumIdIsZero()
|
private void DeleteWhereAlbumIdIsZero()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""Id"" FROM ""MetadataFiles""
|
||||||
SELECT ""Id"" FROM ""MetadataFiles""
|
WHERE ""Type"" IN (4, 6)
|
||||||
WHERE ""Type"" IN (4, 6)
|
AND ""AlbumId"" = 0)");
|
||||||
AND ""AlbumId"" = 0)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteWhereTrackFileIsZero()
|
private void DeleteWhereTrackFileIsZero()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
||||||
mapper.Execute(@"DELETE FROM ""MetadataFiles""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""Id"" FROM ""MetadataFiles""
|
||||||
SELECT ""Id"" FROM ""MetadataFiles""
|
WHERE ""Type"" IN (2, 5)
|
||||||
WHERE ""Type"" IN (2, 5)
|
AND ""TrackFileId"" = 0)");
|
||||||
AND ""TrackFileId"" = 0)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,13 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""PendingReleases""
|
||||||
mapper.Execute(@"DELETE FROM ""PendingReleases""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""PendingReleases"".""Id"" FROM ""PendingReleases""
|
||||||
SELECT ""PendingReleases"".""Id"" FROM ""PendingReleases""
|
LEFT OUTER JOIN ""Artists""
|
||||||
LEFT OUTER JOIN ""Artists""
|
ON ""PendingReleases"".""ArtistId"" = ""Artists"".""Id""
|
||||||
ON ""PendingReleases"".""ArtistId"" = ""Artists"".""Id""
|
WHERE ""Artists"".""Id"" IS NULL)");
|
||||||
WHERE ""Artists"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,13 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""AlbumReleases""
|
||||||
mapper.Execute(@"DELETE FROM ""AlbumReleases""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""AlbumReleases"".""Id"" FROM ""AlbumReleases""
|
||||||
SELECT ""AlbumReleases"".""Id"" FROM ""AlbumReleases""
|
LEFT OUTER JOIN ""Albums""
|
||||||
LEFT OUTER JOIN ""Albums""
|
ON ""AlbumReleases"".""AlbumId"" = ""Albums"".""Id""
|
||||||
ON ""AlbumReleases"".""AlbumId"" = ""Albums"".""Id""
|
WHERE ""Albums"".""Id"" IS NULL)");
|
||||||
WHERE ""Albums"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,32 +20,30 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
private void CleanupOrphanedByAlbum()
|
private void CleanupOrphanedByAlbum()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
|
||||||
// Unlink where track no longer exists
|
// Unlink where track no longer exists
|
||||||
mapper.Execute(@"UPDATE ""TrackFiles""
|
mapper.Execute(@"UPDATE ""TrackFiles""
|
||||||
SET ""AlbumId"" = 0
|
SET ""AlbumId"" = 0
|
||||||
WHERE ""AlbumId"" <> 0 AND ""Id"" IN (
|
WHERE ""AlbumId"" <> 0 AND ""Id"" IN (
|
||||||
SELECT ""TrackFiles"".""Id"" FROM ""TrackFiles""
|
SELECT ""TrackFiles"".""Id"" FROM ""TrackFiles""
|
||||||
LEFT OUTER JOIN ""Tracks""
|
LEFT OUTER JOIN ""Tracks""
|
||||||
ON ""TrackFiles"".""Id"" = ""Tracks"".""TrackFileId""
|
ON ""TrackFiles"".""Id"" = ""Tracks"".""TrackFileId""
|
||||||
WHERE ""Tracks"".""Id"" IS NULL)");
|
WHERE ""Tracks"".""Id"" IS NULL)");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CleanupOrphanedByTracks()
|
private void CleanupOrphanedByTracks()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
|
||||||
// Unlink Tracks where the Trackfiles entry no longer exists
|
// Unlink Tracks where the Trackfiles entry no longer exists
|
||||||
mapper.Execute(@"UPDATE ""Tracks""
|
mapper.Execute(@"UPDATE ""Tracks""
|
||||||
SET ""TrackFileId"" = 0
|
SET ""TrackFileId"" = 0
|
||||||
WHERE ""TrackFileId"" <> 0 AND ""Id"" IN (
|
WHERE ""TrackFileId"" <> 0 AND ""Id"" IN (
|
||||||
SELECT ""Tracks"".""Id"" FROM ""Tracks""
|
SELECT ""Tracks"".""Id"" FROM ""Tracks""
|
||||||
LEFT OUTER JOIN ""TrackFiles""
|
LEFT OUTER JOIN ""TrackFiles""
|
||||||
ON ""Tracks"".""TrackFileId"" = ""TrackFiles"".""Id""
|
ON ""Tracks"".""TrackFileId"" = ""TrackFiles"".""Id""
|
||||||
WHERE ""TrackFiles"".""Id"" IS NULL)");
|
WHERE ""TrackFiles"".""Id"" IS NULL)");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,13 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"DELETE FROM ""Tracks""
|
||||||
mapper.Execute(@"DELETE FROM ""Tracks""
|
WHERE ""Id"" IN (
|
||||||
WHERE ""Id"" IN (
|
SELECT ""Tracks"".""Id"" FROM ""Tracks""
|
||||||
SELECT ""Tracks"".""Id"" FROM ""Tracks""
|
LEFT OUTER JOIN ""AlbumReleases""
|
||||||
LEFT OUTER JOIN ""AlbumReleases""
|
ON ""Tracks"".""AlbumReleaseId"" = ""AlbumReleases"".""Id""
|
||||||
ON ""Tracks"".""AlbumReleaseId"" = ""AlbumReleases"".""Id""
|
WHERE ""AlbumReleases"".""Id"" IS NULL)");
|
||||||
WHERE ""AlbumReleases"".""Id"" IS NULL)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,31 +18,29 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
|
|
||||||
public void Clean()
|
public void Clean()
|
||||||
{
|
{
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
var usedTags = new[] { "Artists", "Notifications", "DelayProfiles", "ReleaseProfiles", "ImportLists", "Indexers" }
|
||||||
var usedTags = new[] { "Artists", "Notifications", "DelayProfiles", "ReleaseProfiles", "ImportLists", "Indexers" }
|
|
||||||
.SelectMany(v => GetUsedTags(v, mapper))
|
.SelectMany(v => GetUsedTags(v, mapper))
|
||||||
.Distinct()
|
.Distinct()
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
if (usedTags.Any())
|
if (usedTags.Any())
|
||||||
|
{
|
||||||
|
var usedTagsList = usedTags.Select(d => d.ToString()).Join(",");
|
||||||
|
|
||||||
|
if (_database.DatabaseType == DatabaseType.PostgreSQL)
|
||||||
{
|
{
|
||||||
var usedTagsList = usedTags.Select(d => d.ToString()).Join(",");
|
mapper.Execute($"DELETE FROM \"Tags\" WHERE NOT \"Id\" = ANY (\'{{{usedTagsList}}}\'::int[])");
|
||||||
|
|
||||||
if (_database.DatabaseType == DatabaseType.PostgreSQL)
|
|
||||||
{
|
|
||||||
mapper.Execute($"DELETE FROM \"Tags\" WHERE NOT \"Id\" = ANY (\'{{{usedTagsList}}}\'::int[])");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mapper.Execute($"DELETE FROM \"Tags\" WHERE NOT \"Id\" IN ({usedTagsList})");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mapper.Execute("DELETE FROM \"Tags\"");
|
mapper.Execute($"DELETE FROM \"Tags\" WHERE NOT \"Id\" IN ({usedTagsList})");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mapper.Execute("DELETE FROM \"Tags\"");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int[] GetUsedTags(string table, IDbConnection mapper)
|
private int[] GetUsedTags(string table, IDbConnection mapper)
|
||||||
|
|
|
@ -24,13 +24,11 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
_logger.Debug("Not running scheduled task last execution cleanup during debug");
|
_logger.Debug("Not running scheduled task last execution cleanup during debug");
|
||||||
}
|
}
|
||||||
|
|
||||||
using (var mapper = _database.OpenConnection())
|
using var mapper = _database.OpenConnection();
|
||||||
{
|
mapper.Execute(@"UPDATE ""ScheduledTasks""
|
||||||
mapper.Execute(@"UPDATE ""ScheduledTasks""
|
SET ""LastExecution"" = @time
|
||||||
SET ""LastExecution"" = @time
|
WHERE ""LastExecution"" > @time",
|
||||||
WHERE ""LastExecution"" > @time",
|
new { time = DateTime.UtcNow });
|
||||||
new { time = DateTime.UtcNow });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue