@ -9,11 +9,14 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging ;
using System ;
using System.Collections.Generic ;
using System.Globalization ;
using System.Threading ;
using System.Threading.Tasks ;
using CommonIO ;
using MediaBrowser.Controller.Channels ;
using MediaBrowser.Controller.Entities.Audio ;
using MediaBrowser.Controller.Localization ;
using MediaBrowser.Controller.Net ;
namespace MediaBrowser.Server.Implementations.Persistence
{
@ -24,16 +27,21 @@ namespace MediaBrowser.Server.Implementations.Persistence
private readonly ILogger _logger ;
private readonly IServerConfigurationManager _config ;
private readonly IFileSystem _fileSystem ;
private readonly IHttpServer _httpServer ;
private readonly ILocalizationManager _localization ;
public const int MigrationVersion = 7 ;
public const int MigrationVersion = 12 ;
public static bool EnableUnavailableMessage = false ;
public CleanDatabaseScheduledTask ( ILibraryManager libraryManager , IItemRepository itemRepo , ILogger logger , IServerConfigurationManager config , IFileSystem fileSystem )
public CleanDatabaseScheduledTask ( ILibraryManager libraryManager , IItemRepository itemRepo , ILogger logger , IServerConfigurationManager config , IFileSystem fileSystem , IHttpServer httpServer , ILocalizationManager localization )
{
_libraryManager = libraryManager ;
_itemRepo = itemRepo ;
_logger = logger ;
_config = config ;
_fileSystem = fileSystem ;
_httpServer = httpServer ;
_localization = localization ;
}
public string Name
@ -54,7 +62,23 @@ namespace MediaBrowser.Server.Implementations.Persistence
public async Task Execute ( CancellationToken cancellationToken , IProgress < double > progress )
{
var innerProgress = new ActionableProgress < double > ( ) ;
innerProgress . RegisterAction ( p = > progress . Report ( . 4 * p ) ) ;
innerProgress . RegisterAction ( p = >
{
double newPercentCommplete = . 4 * p ;
if ( EnableUnavailableMessage )
{
var html = "<!doctype html><html><head><title>Emby</title></head><body>" ;
var text = _localization . GetLocalizedString ( "DbUpgradeMessage" ) ;
html + = string . Format ( text , newPercentCommplete . ToString ( "N2" , CultureInfo . InvariantCulture ) ) ;
html + = "<script>setTimeout(function(){window.location.reload(true);}, 5000);</script>" ;
html + = "</body></html>" ;
_httpServer . GlobalResponse = html ;
}
progress . Report ( newPercentCommplete ) ;
} ) ;
await UpdateToLatestSchema ( cancellationToken , innerProgress ) . ConfigureAwait ( false ) ;
@ -69,6 +93,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
progress . Report ( 100 ) ;
await _itemRepo . UpdateInheritedValues ( cancellationToken ) . ConfigureAwait ( false ) ;
if ( EnableUnavailableMessage )
{
EnableUnavailableMessage = false ;
_httpServer . GlobalResponse = null ;
}
}
private async Task UpdateToLatestSchema ( CancellationToken cancellationToken , IProgress < double > progress )