aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs')
-rw-r--r--Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs44
1 files changed, 22 insertions, 22 deletions
diff --git a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
index 9a80eafe5..676bb7f81 100644
--- a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
+++ b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
@@ -48,7 +48,9 @@ public class CleanDatabaseScheduledTask : ILibraryPostScanTask
var numComplete = 0;
var numItems = itemIds.Count + 1;
- _logger.LogDebug("Cleaning {Number} items with dead parent links", numItems);
+ _logger.LogDebug("Cleaning {Number} items with dead parents", numItems);
+
+ IProgress<double> subProgress = new Progress<double>((val) => progress.Report(val / 2));
foreach (var itemId in itemIds)
{
@@ -61,33 +63,28 @@ public class CleanDatabaseScheduledTask : ILibraryPostScanTask
foreach (var mediaSource in item.GetMediaSources(false))
{
- // Delete extracted subtitles
- try
+ // Delete extracted data
+ var mediaSourceItem = _libraryManager.GetItemById(mediaSource.Id);
+ if (mediaSourceItem is null)
{
- var subtitleFolder = _pathManager.GetSubtitleFolderPath(mediaSource.Id);
- if (Directory.Exists(subtitleFolder))
- {
- Directory.Delete(subtitleFolder, true);
- }
- }
- catch (Exception e)
- {
- _logger.LogWarning("Failed to remove subtitle cache folder for {Item}: {Exception}", item.Id, e.Message);
+ continue;
}
- // Delete extracted attachments
- try
+ var extractedDataFolders = _pathManager.GetExtractedDataPaths(mediaSourceItem);
+ foreach (var folder in extractedDataFolders)
{
- var attachmentFolder = _pathManager.GetAttachmentFolderPath(mediaSource.Id);
- if (Directory.Exists(attachmentFolder))
+ if (Directory.Exists(folder))
{
- Directory.Delete(attachmentFolder, true);
+ try
+ {
+ Directory.Delete(folder, true);
+ }
+ catch (Exception e)
+ {
+ _logger.LogWarning("Failed to remove {Folder}: {Exception}", folder, e.Message);
+ }
}
}
- catch (Exception e)
- {
- _logger.LogWarning("Failed to remove attachment cache folder for {Item}: {Exception}", item.Id, e.Message);
- }
}
// Delete item
@@ -100,9 +97,10 @@ public class CleanDatabaseScheduledTask : ILibraryPostScanTask
numComplete++;
double percent = numComplete;
percent /= numItems;
- progress.Report(percent * 100);
+ subProgress.Report(percent * 100);
}
+ subProgress = new Progress<double>((val) => progress.Report((val / 2) + 50));
var context = await _dbProvider.CreateDbContextAsync(cancellationToken).ConfigureAwait(false);
await using (context.ConfigureAwait(false))
{
@@ -110,7 +108,9 @@ public class CleanDatabaseScheduledTask : ILibraryPostScanTask
await using (transaction.ConfigureAwait(false))
{
await context.ItemValues.Where(e => e.BaseItemsMap!.Count == 0).ExecuteDeleteAsync(cancellationToken).ConfigureAwait(false);
+ subProgress.Report(50);
await transaction.CommitAsync(cancellationToken).ConfigureAwait(false);
+ subProgress.Report(100);
}
}