aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2015-08-29 14:07:27 -0400
committerLuke <luke.pulverenti@gmail.com>2015-08-29 14:07:27 -0400
commit6f343203ce1d46f83e3b0d5d2865d30f9b9e6a36 (patch)
tree99757b4beec8399d27fadbab7e4a8ac545c22bb7 /MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs
parent3425b53376e2d7a624e238159414bde9e12f61e6 (diff)
parent636bd5ab76b7cb78c1784d2004b1fe4eedeb4162 (diff)
Merge branch 'dev' of https://github.com/MediaBrowser/MediaBrowser into dev
Diffstat (limited to 'MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs46
1 files changed, 45 insertions, 1 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs
index 7a993b7db..d913063c8 100644
--- a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs
@@ -46,9 +46,16 @@ namespace MediaBrowser.Server.Implementations.Persistence
public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
{
var innerProgress = new ActionableProgress<double>();
- innerProgress.RegisterAction(progress.Report);
+ innerProgress.RegisterAction(p => progress.Report(.95 * p));
await UpdateToLatestSchema(cancellationToken, innerProgress).ConfigureAwait(false);
+
+ innerProgress = new ActionableProgress<double>();
+ innerProgress.RegisterAction(p => progress.Report(95 + (.05 * p)));
+
+ //await CleanDeadItems(cancellationToken, innerProgress).ConfigureAwait(false);
+
+ progress.Report(100);
}
private async Task UpdateToLatestSchema(CancellationToken cancellationToken, IProgress<double> progress)
@@ -92,6 +99,43 @@ namespace MediaBrowser.Server.Implementations.Persistence
progress.Report(100);
}
+ private async Task CleanDeadItems(CancellationToken cancellationToken, IProgress<double> progress)
+ {
+ var itemIds = _libraryManager.GetItemIds(new InternalItemsQuery
+ {
+ HasDeadParentId = true
+ });
+
+ var numComplete = 0;
+ var numItems = itemIds.Count;
+
+ _logger.Debug("Cleaning {0} items with dead parent links", numItems);
+
+ foreach (var itemId in itemIds)
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+
+ var item = _libraryManager.GetItemById(itemId);
+
+ if (item != null)
+ {
+ _logger.Debug("Cleaning item {0} type: {1} path: {2}", item.Name, item.GetType().Name, item.Path ?? string.Empty);
+
+ await _libraryManager.DeleteItem(item, new DeleteOptions
+ {
+ DeleteFileLocation = false
+ });
+ }
+
+ numComplete++;
+ double percent = numComplete;
+ percent /= numItems;
+ progress.Report(percent * 100);
+ }
+
+ progress.Report(100);
+ }
+
public IEnumerable<ITaskTrigger> GetDefaultTriggers()
{
return new ITaskTrigger[]