public SystemContext(IOptions <OspSystemConfiguration> systemConfiguration, IDistributedWithPubSubCache distributedWithPubSubCache) { ArgumentValidation.Validate(nameof(systemConfiguration), systemConfiguration); ArgumentValidation.Validate(nameof(distributedWithPubSubCache), distributedWithPubSubCache); _systemConfiguration = systemConfiguration.Value; _distributedWithPubSubCache = distributedWithPubSubCache; var sharedSettings = new MongoConnectionOptions { MongoDbHost = _systemConfiguration.DatabaseHost, MongoDbUsername = _systemConfiguration.AdminUser, MongoDbPassword = _systemConfiguration.AdminUserPassword, AuthenticationSource = _systemConfiguration.AuthenticationDatabaseName }; _ckCaches = new ConcurrentDictionary <string, ICkCache>(); _repositoryClient = new MongoRepositoryClient(sharedSettings); OspSystemDatabase = _repositoryClient.GetRepository(_systemConfiguration.SystemDatabaseName); _tenantCollection = OspSystemDatabase.GetCollection <SystemEntities.OspTenant>(); _configurationCollection = OspSystemDatabase.GetCollection <OspConfiguration>(); var sub = _distributedWithPubSubCache.Subscribe <string>(CacheCommon.KeyTenantUpdate); sub.OnMessage(message => { RemoveCkCache(message.Message); return(Task.CompletedTask); }); }
public async Task <IOspSession> StartSystemSessionAsync() { var systemSession = await OspSystemDatabase.StartSessionAsync(); return(systemSession); }