using IdentityServer4.EntityFramework.DbContexts; using IdentityServer4.EntityFramework.Mappers; using Microsoft.eShopOnContainers.Services.Identity.API.Configuration; using Microsoft.Extensions.Configuration; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Microsoft.eShopOnContainers.Services.Identity.API.Data { public class ConfigurationDbContextSeed { public async Task SeedAsync(ConfigurationDbContext context,IConfiguration configuration) { //callbacks urls from config: var clientUrls = new Dictionary(); clientUrls.Add("Mvc", configuration.GetValue("MvcClient")); clientUrls.Add("Spa", configuration.GetValue("SpaClient")); clientUrls.Add("Xamarin", configuration.GetValue("XamarinCallback")); clientUrls.Add("LocationsApi", configuration.GetValue("LocationApiClient")); clientUrls.Add("MarketingApi", configuration.GetValue("MarketingApiClient")); clientUrls.Add("BasketApi", configuration.GetValue("BasketApiClient")); clientUrls.Add("OrderingApi", configuration.GetValue("OrderingApiClient")); clientUrls.Add("MobileShoppingAgg", configuration.GetValue("MobileShoppingAggClient")); if (!context.Clients.Any()) { foreach (var client in Config.GetClients(clientUrls)) { await context.Clients.AddAsync(client.ToEntity()); } await context.SaveChangesAsync(); } if (!context.IdentityResources.Any()) { foreach (var resource in Config.GetResources()) { await context.IdentityResources.AddAsync(resource.ToEntity()); } await context.SaveChangesAsync(); } if (!context.ApiResources.Any()) { foreach (var api in Config.GetApis()) { await context.ApiResources.AddAsync(api.ToEntity()); } await context.SaveChangesAsync(); } } } }