using Microsoft.Extensions.Logging; namespace Jellyfin.Server.Migrations { /// /// The class that knows how migrate between different Jellyfin versions. /// public static class MigrationRunner { private static readonly IUpdater[] _migrations = { new Pre_10_5() }; /// /// Run all needed migrations. /// /// CoreAppHost that hosts current version. /// AppHost logger. /// Whether anything was changed. public static bool Run(CoreAppHost host, ILogger logger) { bool updated = false; var version = host.ServerConfigurationManager.CommonConfiguration.PreviousVersion; for (var i = 0; i < _migrations.Length; i++) { var updater = _migrations[i]; if (version.CompareTo(updater.Maximum) >= 0) { logger.LogDebug("Skipping updater {0} as current version {1} >= its maximum applicable version {2}", updater, version, updater.Maximum); continue; } if (updater.Perform(host, logger, version)) { updated = true; } version = updater.Maximum; } return updated; } } }