diff options
| author | Luke <luke.pulverenti@gmail.com> | 2015-08-29 14:07:27 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2015-08-29 14:07:27 -0400 |
| commit | 6f343203ce1d46f83e3b0d5d2865d30f9b9e6a36 (patch) | |
| tree | 99757b4beec8399d27fadbab7e4a8ac545c22bb7 /MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs | |
| parent | 3425b53376e2d7a624e238159414bde9e12f61e6 (diff) | |
| parent | 636bd5ab76b7cb78c1784d2004b1fe4eedeb4162 (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.cs | 46 |
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[] |
