LibraryScanMigration.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4. using System.Threading.Tasks;
  5. using MediaBrowser.Common.Net;
  6. using MediaBrowser.Common.Updates;
  7. using MediaBrowser.Controller;
  8. using MediaBrowser.Controller.Configuration;
  9. using MediaBrowser.Model.Logging;
  10. using MediaBrowser.Model.Serialization;
  11. using MediaBrowser.Model.Tasks;
  12. using MediaBrowser.Model.Updates;
  13. using System.Linq;
  14. namespace Emby.Server.Implementations.Migrations
  15. {
  16. public class LibraryScanMigration : IVersionMigration
  17. {
  18. private readonly IServerConfigurationManager _config;
  19. private readonly ITaskManager _taskManager;
  20. public LibraryScanMigration(IServerConfigurationManager config, ITaskManager taskManager)
  21. {
  22. _config = config;
  23. _taskManager = taskManager;
  24. }
  25. public async Task Run()
  26. {
  27. var name = "LibraryScan6";
  28. if (!_config.Configuration.Migrations.Contains(name, StringComparer.OrdinalIgnoreCase))
  29. {
  30. Task.Run(() =>
  31. {
  32. var task = _taskManager.ScheduledTasks.Select(i => i.ScheduledTask)
  33. .First(i => string.Equals(i.Key, "RefreshLibrary", StringComparison.OrdinalIgnoreCase));
  34. _taskManager.QueueScheduledTask(task);
  35. });
  36. var list = _config.Configuration.Migrations.ToList();
  37. list.Add(name);
  38. _config.Configuration.Migrations = list.ToArray();
  39. _config.SaveConfiguration();
  40. }
  41. }
  42. }
  43. }