public DatabaseContext CreateContext(DatabaseSettingsPlaceholder settings) { int id = SynchronizedContexts.Count; if (SynchronizedContexts.TryAdd(id, new DatabaseContext(id, settings))) { if (SynchronizedContexts.TryGetValue(id, out var val)) { return(val); } throw new Exception($"Invalid work with concurrent cache!"); } else { if (SynchronizedContexts.ContainsKey(id)) { if (SynchronizedContexts.TryGetValue(id, out var val)) { return(val); } throw new Exception($"Invalid work with concurrent cache!"); } throw new Exception($"Unknown error with database contexts caching"); } }
public DatabaseContext(int identifier, DatabaseSettingsPlaceholder settings) { ConcurrentIdentifier = identifier; DatabaseSettings = settings; SupportedAccesors = new List <IDatabaseAccessor>() { new UserAccessor(Users, this), new UserSubscriptionsAccessor(UsersSubscriptions, this), new ProductAccessor(Products, this), new NewsAccessor(Articles, this), new ProductGuardAccessor(ProductGaurds, this), new UpdateAccessor(Updates, this) }; }
public void Init() { Log = FindObjectOfType <JournalObject>(); var externalSettingsObject = FindObjectOfType <ExternalSettingsObject>(); if (externalSettingsObject == null) { Log.ImmediateWriteToProvider <TerminalJournalProvider>("Can't run server because external settings object not available now!", Journal.Contracts.JournalingLevel.Critical); return; } Settings = externalSettingsObject.GetObjectPlaceholder("external-settings:database").As <DatabaseSettingsPlaceholder>(); if (Settings == null) { Log.ImmediateWriteToProvider <TerminalJournalProvider>($"Can't initialize server variables because not available database settings placeholder", Journal.Contracts.JournalingLevel.Critical); return; } AddComponent <DatabaseVisualUpdaterComponent>(); AddComponent <DatabaseContextsCacheComponent>(); AddComponent <DatabaseUpdateStatusComponent>(); }