public static async Task SeedDatabaseAsync(this IServiceProvider serviceProvider, string csvUrl)
        {
            using (var serviceScope = serviceProvider.CreateScope())
            {
                var logger           = serviceScope.ServiceProvider.GetService <ILogger <Startup> >();
                var autoMapper       = serviceScope.ServiceProvider.GetService <IMapper>();
                var dbContext        = serviceScope.ServiceProvider.GetService <BreweryDbContext>();
                var breweryConductor = serviceScope.ServiceProvider.GetService <IBreweryConductor>();
                var userConductor    = serviceScope.ServiceProvider.GetService <IUserConductor>();

                if (!dbContext.AllMigrationsApplied())
                {
                    logger.LogInformation($"Initializing Database");

                    dbContext.Database.Migrate();
                }

                if (!dbContext.Users.Any())
                {
                    _ = userConductor.Create(new User
                    {
                        FirstName = "Michael",
                        LastName  = "Tyson",
                        Email     = "*****@*****.**"
                    }, "Passw0rd!");
                }

                await dbContext.EnsureSeededAsync(async() =>
                {
                    logger.LogInformation($"Downloading: {csvUrl}");

                    using (var file = new FileDownload(csvUrl))
                    {
                        var streamReader = await file.StreamReader();

                        var breweryImportEntities = autoMapper
                                                    .Map <IEnumerable <Entity.Brewery> >(
                            GetBreweries(streamReader)
                            )
                                                    .ToList();

                        logger.LogInformation($"<******************* Importing {breweryImportEntities.Count} breweries *******************>");

                        var results = breweryConductor.BulkCreate(breweryImportEntities);