diff --git a/src/FilterLists.Api/Program.cs b/src/FilterLists.Api/Program.cs index 660543ed1..b6dcd390c 100644 --- a/src/FilterLists.Api/Program.cs +++ b/src/FilterLists.Api/Program.cs @@ -1,5 +1,8 @@ -using Microsoft.AspNetCore; +using FilterLists.Data; +using FilterLists.Data.Contexts; +using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; namespace FilterLists.Api { @@ -7,7 +10,12 @@ public class Program { public static void Main(string[] args) { - BuildWebHost(args).Run(); + var host = BuildWebHost(args); + //using (var scope = host.Services.CreateScope()) + //{ + // DbInitializer.Initialize(scope.ServiceProvider.GetRequiredService()); + //} + host.Run(); } public static IWebHost BuildWebHost(string[] args) diff --git a/src/FilterLists.Data/DbInitializer.cs b/src/FilterLists.Data/DbInitializer.cs new file mode 100644 index 000000000..70e5b9276 --- /dev/null +++ b/src/FilterLists.Data/DbInitializer.cs @@ -0,0 +1,32 @@ +using FilterLists.Data.Contexts; +using FilterLists.Data.Models; +using FilterLists.Data.Repositories.Implementations; + +namespace FilterLists.Data +{ + public static class DbInitializer + { + public static void Initialize(FilterListsDbContext filterListsDbContext) + { + filterListsDbContext.Database.EnsureCreated(); + InitializeList(filterListsDbContext); + } + + private static void InitializeList(FilterListsDbContext filterListsDbContext) + { + var listRepository = new ListRepository(filterListsDbContext); + if (listRepository.Any()) + { + listRepository.DeleteAll(); + } + var lists = new List[] + { + //TODO: populate from csv or json + }; + foreach (var list in lists) + { + listRepository.Create(list); + } + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Data/Repositories/Contracts/IListRepository.cs b/src/FilterLists.Data/Repositories/Contracts/IListRepository.cs index fa95ca5e1..84a4652fd 100644 --- a/src/FilterLists.Data/Repositories/Contracts/IListRepository.cs +++ b/src/FilterLists.Data/Repositories/Contracts/IListRepository.cs @@ -7,5 +7,8 @@ public interface IListRepository { IEnumerable GetAll(); List GetByName(string listName); + void Create(List list); + void DeleteAll(); + bool Any(); } } \ No newline at end of file diff --git a/src/FilterLists.Data/Repositories/Implementations/ListRepository.cs b/src/FilterLists.Data/Repositories/Implementations/ListRepository.cs index 01ed1a7dd..5b6c04761 100644 --- a/src/FilterLists.Data/Repositories/Implementations/ListRepository.cs +++ b/src/FilterLists.Data/Repositories/Implementations/ListRepository.cs @@ -24,5 +24,20 @@ public List GetByName(string listName) { return _filterListsDbContext.List.First(x => x.Name == listName); } + + public void Create(List list) + { + _filterListsDbContext.List.Add(list); + } + + public void DeleteAll() + { + _filterListsDbContext.List.RemoveRange(_filterListsDbContext.List); + } + + public bool Any() + { + return _filterListsDbContext.List.Any(); + } } } \ No newline at end of file