public AuthDatabaseProvider(SkyFireMySqlDatabaseProvider skyfireDatabase, NullAuthDatabaseProvider nullAuthDatabaseProvider, IAuthDatabaseSettingsProvider settingsProvider, IMessageBoxService messageBoxService ) : base(nullAuthDatabaseProvider) { if (settingsProvider.Settings.IsEmpty) { return; } try { using var db = new SkyFireAuthDatabase(); if (db.Connection.State != ConnectionState.Open) { db.Connection.Open(); db.Connection.Close(); } impl = skyfireDatabase; } catch (Exception e) { impl = nullAuthDatabaseProvider; messageBoxService.ShowDialog(new MessageBoxFactory <bool>().SetTitle("Database error") .SetIcon(MessageBoxIcon.Error) .SetMainInstruction("Couldn't connect to the auth database") .SetContent(e.Message) .WithOkButton(true) .Build()); } }
public WorldDatabaseProvider(SkyFireMySqlDatabaseProvider skyfireDatabase, NullWorldDatabaseProvider nullWorldDatabaseProvider, IWorldDatabaseSettingsProvider settingsProvider, IMessageBoxService messageBoxService, ILoadingEventAggregator loadingEventAggregator, IEventAggregator eventAggregator, IContainerProvider containerProvider) : base(nullWorldDatabaseProvider) { if (settingsProvider.Settings.IsEmpty) { eventAggregator.GetEvent <AllModulesLoaded>().Subscribe(loadingEventAggregator.Publish <DatabaseLoadedEvent>, true); return; } try { var cachedDatabase = containerProvider.Resolve <CachedDatabaseProvider>((typeof(IAsyncDatabaseProvider), skyfireDatabase)); cachedDatabase.TryConnect(); impl = cachedDatabase; } catch (Exception e) { impl = nullWorldDatabaseProvider; messageBoxService.ShowDialog(new MessageBoxFactory <bool>().SetTitle("Database error") .SetIcon(MessageBoxIcon.Error) .SetMainInstruction("Couldn't connect to the database") .SetContent(e.Message) .WithOkButton(true) .Build()); } }