public async Task AddSourcesAsync(IConfigurationBuilder builder) { DatabaseShellsSettings document; using var context = await _shellContextFactory.GetDatabaseContextAsync(_options); using (var scope = context.ServiceProvider.CreateScope()) { var session = scope.ServiceProvider.GetRequiredService <ISession>(); document = await session.Query <DatabaseShellsSettings>().FirstOrDefaultAsync(); if (document == null) { document = new DatabaseShellsSettings(); if (!_options.MigrateFromFiles || !await TryMigrateFromFileAsync(document)) { return; } session.Save(document, checkConcurrency: true); } } builder.AddJsonStream(new MemoryStream(Encoding.UTF8.GetBytes(document.ShellsSettings.ToString(Formatting.None)))); }
public async Task AddSourcesAsync(string tenant, IConfigurationBuilder builder) { JObject configurations = null; using var context = await _shellContextFactory.GetDatabaseContextAsync(_options); await context.CreateScope().UsingServiceScopeAsync(async scope => { var session = scope.ServiceProvider.GetRequiredService <ISession>(); var document = await session.Query <DatabaseShellConfigurations>().FirstOrDefaultAsync(); if (document != null) { configurations = document.ShellConfigurations; } else { document = new DatabaseShellConfigurations(); configurations = new JObject(); } if (!configurations.ContainsKey(tenant)) { if (!_options.MigrateFromFiles || !await TryMigrateFromFileAsync(tenant, configurations)) { return; } document.ShellConfigurations = configurations; session.Save(document, checkConcurrency: true); } }); var configuration = configurations.GetValue(tenant) as JObject; if (configuration != null) { builder.AddJsonStream(new MemoryStream(Encoding.UTF8.GetBytes(configuration.ToString(Formatting.None)))); } }