2015-10-29 06:28:05 -07:00
|
|
|
|
using System.Threading.Tasks;
|
2016-11-02 23:37:52 -07:00
|
|
|
|
using Emby.Server.Implementations.Persistence;
|
2015-10-29 06:28:05 -07:00
|
|
|
|
using MediaBrowser.Controller.Configuration;
|
2016-10-23 12:47:34 -07:00
|
|
|
|
using MediaBrowser.Model.Tasks;
|
2016-11-10 21:25:21 -07:00
|
|
|
|
using MediaBrowser.Server.Startup.Common.Persistence;
|
2015-10-29 06:28:05 -07:00
|
|
|
|
|
|
|
|
|
namespace MediaBrowser.Server.Startup.Common.Migrations
|
|
|
|
|
{
|
|
|
|
|
public class DbMigration : IVersionMigration
|
|
|
|
|
{
|
|
|
|
|
private readonly IServerConfigurationManager _config;
|
|
|
|
|
private readonly ITaskManager _taskManager;
|
|
|
|
|
|
|
|
|
|
public DbMigration(IServerConfigurationManager config, ITaskManager taskManager)
|
|
|
|
|
{
|
|
|
|
|
_config = config;
|
|
|
|
|
_taskManager = taskManager;
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-16 23:09:29 -07:00
|
|
|
|
public async Task Run()
|
2015-10-29 06:28:05 -07:00
|
|
|
|
{
|
2016-06-15 11:56:37 -07:00
|
|
|
|
// If a forced migration is required, do that now
|
2016-02-14 21:46:51 -07:00
|
|
|
|
if (_config.Configuration.MigrationVersion < CleanDatabaseScheduledTask.MigrationVersion)
|
2015-10-29 06:28:05 -07:00
|
|
|
|
{
|
2016-02-14 21:46:51 -07:00
|
|
|
|
if (!_config.Configuration.IsStartupWizardCompleted)
|
|
|
|
|
{
|
|
|
|
|
_config.Configuration.MigrationVersion = CleanDatabaseScheduledTask.MigrationVersion;
|
|
|
|
|
_config.SaveConfiguration();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2016-02-03 13:52:45 -07:00
|
|
|
|
_taskManager.SuspendTriggers = true;
|
2016-02-01 12:54:49 -07:00
|
|
|
|
CleanDatabaseScheduledTask.EnableUnavailableMessage = true;
|
|
|
|
|
|
2015-11-02 10:25:01 -07:00
|
|
|
|
Task.Run(async () =>
|
|
|
|
|
{
|
2016-02-14 21:46:51 -07:00
|
|
|
|
await Task.Delay(1000).ConfigureAwait(false);
|
2015-10-29 06:28:05 -07:00
|
|
|
|
|
2016-02-03 13:52:45 -07:00
|
|
|
|
_taskManager.Execute<CleanDatabaseScheduledTask>();
|
2015-11-02 10:25:01 -07:00
|
|
|
|
});
|
2016-06-15 11:56:37 -07:00
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (_config.Configuration.SchemaVersion < SqliteItemRepository.LatestSchemaVersion)
|
|
|
|
|
{
|
|
|
|
|
if (!_config.Configuration.IsStartupWizardCompleted)
|
|
|
|
|
{
|
|
|
|
|
_config.Configuration.SchemaVersion = SqliteItemRepository.LatestSchemaVersion;
|
|
|
|
|
_config.SaveConfiguration();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Task.Run(async () =>
|
|
|
|
|
{
|
|
|
|
|
await Task.Delay(1000).ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
_taskManager.Execute<CleanDatabaseScheduledTask>();
|
|
|
|
|
});
|
2015-11-02 10:25:01 -07:00
|
|
|
|
}
|
2015-10-29 06:28:05 -07:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|