From e4da4a799a2069daae1b373c0d141dd7acf31cf0 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Sun, 25 Jun 2017 08:25:33 -0500 Subject: [PATCH] add Startup.cs, re-work DI config for #102 --- .gitignore | 3 +- src/FilterLists.Api/FilterLists.Api.csproj | 5 +++ src/FilterLists.Api/Startup.cs | 2 +- src/FilterLists.DataLoad/DataLoad.cs | 19 ----------- .../Extensions/ConfigureServicesCollection.cs | 11 +++++++ .../FilterLists.DataLoad.csproj | 12 +++++++ src/FilterLists.DataLoad/Program.cs | 26 +++++++++++++++ src/FilterLists.DataLoad/Startup.cs | 32 +++++++++++++++++++ .../Extensions/ConfigureServicesCollection.cs | 1 + .../Implementations/TableService.cs | 6 ++-- 10 files changed, 93 insertions(+), 24 deletions(-) delete mode 100644 src/FilterLists.DataLoad/DataLoad.cs create mode 100644 src/FilterLists.DataLoad/DependencyInjection/Extensions/ConfigureServicesCollection.cs create mode 100644 src/FilterLists.DataLoad/Program.cs create mode 100644 src/FilterLists.DataLoad/Startup.cs diff --git a/.gitignore b/.gitignore index 206ec90d7..2f9eb9a55 100644 --- a/.gitignore +++ b/.gitignore @@ -297,4 +297,5 @@ __pycache__/ # FilterLists Custom Ignores gs/Private.gs src/FilterLists.Api/appsettings.Development.json -src/FilterLists.Api/appsettings.Production.json \ No newline at end of file +src/FilterLists.Api/appsettings.Production.json +src/FilterLists.DataLoad/appsettings.json diff --git a/src/FilterLists.Api/FilterLists.Api.csproj b/src/FilterLists.Api/FilterLists.Api.csproj index 712a48d80..d1bbe5b0c 100644 --- a/src/FilterLists.Api/FilterLists.Api.csproj +++ b/src/FilterLists.Api/FilterLists.Api.csproj @@ -28,5 +28,10 @@ + + + PreserveNewest + + diff --git a/src/FilterLists.Api/Startup.cs b/src/FilterLists.Api/Startup.cs index 4a1b43b2e..76b126fa5 100644 --- a/src/FilterLists.Api/Startup.cs +++ b/src/FilterLists.Api/Startup.cs @@ -21,7 +21,7 @@ public Startup(IHostingEnvironment env, ILoggerFactory loggerFactory) .AddEnvironmentVariables(); Configuration = builder.Build(); - //TODO: replace below with serilog + //TODO: replace with serilog loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); } diff --git a/src/FilterLists.DataLoad/DataLoad.cs b/src/FilterLists.DataLoad/DataLoad.cs deleted file mode 100644 index e0ff6afc0..000000000 --- a/src/FilterLists.DataLoad/DataLoad.cs +++ /dev/null @@ -1,19 +0,0 @@ -using FilterLists.Services.Contracts; -using FilterLists.Services.Implementations; -using Microsoft.Extensions.DependencyInjection; - -namespace FilterLists.DataLoad -{ - //TODO: trigger on job or ideally via GitHub webhook when any .csv is updated - internal class DataLoad - { - private static void Main() - { - var serviceProvider = new ServiceCollection() - .AddLogging() - .AddSingleton() - .BuildServiceProvider(); - serviceProvider.GetService().UpdateTables(); - } - } -} \ No newline at end of file diff --git a/src/FilterLists.DataLoad/DependencyInjection/Extensions/ConfigureServicesCollection.cs b/src/FilterLists.DataLoad/DependencyInjection/Extensions/ConfigureServicesCollection.cs new file mode 100644 index 000000000..fdc0a43f7 --- /dev/null +++ b/src/FilterLists.DataLoad/DependencyInjection/Extensions/ConfigureServicesCollection.cs @@ -0,0 +1,11 @@ +using Microsoft.Extensions.DependencyInjection; + +namespace FilterLists.DataLoad.DependencyInjection.Extensions +{ + public static class ConfigureServicesCollection + { + public static void AddFilterListsDataLoad(this IServiceCollection services) + { + } + } +} \ No newline at end of file diff --git a/src/FilterLists.DataLoad/FilterLists.DataLoad.csproj b/src/FilterLists.DataLoad/FilterLists.DataLoad.csproj index 91bbe737c..8a6ea05c9 100644 --- a/src/FilterLists.DataLoad/FilterLists.DataLoad.csproj +++ b/src/FilterLists.DataLoad/FilterLists.DataLoad.csproj @@ -5,8 +5,20 @@ netcoreapp1.1 + + + + + + + PreserveNewest + + + + + diff --git a/src/FilterLists.DataLoad/Program.cs b/src/FilterLists.DataLoad/Program.cs new file mode 100644 index 000000000..83111bfaf --- /dev/null +++ b/src/FilterLists.DataLoad/Program.cs @@ -0,0 +1,26 @@ +using FilterLists.Services.Contracts; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace FilterLists.DataLoad +{ + //TODO: trigger on job or ideally via GitHub webhook when any .csv is updated in master + public class Program + { + public static void Main(string[] args) + { + IServiceCollection services = new ServiceCollection(); + var startup = new Startup(); + startup.ConfigureServices(services); + var serviceProvider = services.BuildServiceProvider(); + + //TODO: replace with serilog + var loggerFactory = serviceProvider.GetService(); + var logger = loggerFactory.CreateLogger(); + + logger.LogInformation("Updating Tables"); + var tableService = serviceProvider.GetService(); + tableService.UpdateTables(); + } + } +} \ No newline at end of file diff --git a/src/FilterLists.DataLoad/Startup.cs b/src/FilterLists.DataLoad/Startup.cs new file mode 100644 index 000000000..574a61be7 --- /dev/null +++ b/src/FilterLists.DataLoad/Startup.cs @@ -0,0 +1,32 @@ +using System.IO; +using FilterLists.Data.DependencyInjection.Extensions; +using FilterLists.DataLoad.DependencyInjection.Extensions; +using FilterLists.Services.DependencyInjection.Extensions; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace FilterLists.DataLoad +{ + public class Startup + { + public Startup() + { + var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json", false, true); + Configuration = builder.Build(); + } + + private IConfigurationRoot Configuration { get; } + + public void ConfigureServices(IServiceCollection services) + { + var loggerFactory = new LoggerFactory().AddConsole().AddDebug(); + services.AddSingleton(loggerFactory); + services.AddLogging(); + services.AddFilterListsRepositories(Configuration); + services.AddFilterListsServices(); + services.AddFilterListsDataLoad(); + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Services/DependencyInjection/Extensions/ConfigureServicesCollection.cs b/src/FilterLists.Services/DependencyInjection/Extensions/ConfigureServicesCollection.cs index ac456e9f8..b54fe1702 100644 --- a/src/FilterLists.Services/DependencyInjection/Extensions/ConfigureServicesCollection.cs +++ b/src/FilterLists.Services/DependencyInjection/Extensions/ConfigureServicesCollection.cs @@ -10,6 +10,7 @@ public static class ConfigureServicesCollection public static void AddFilterListsServices(this IServiceCollection services) { services.TryAddScoped(); + services.TryAddScoped(); } } } \ No newline at end of file diff --git a/src/FilterLists.Services/Implementations/TableService.cs b/src/FilterLists.Services/Implementations/TableService.cs index 6ed07a0f9..36885c915 100644 --- a/src/FilterLists.Services/Implementations/TableService.cs +++ b/src/FilterLists.Services/Implementations/TableService.cs @@ -9,11 +9,11 @@ namespace FilterLists.Services.Implementations { public class TableService : ITableService { - //private readonly IListRepository _listRepository; + private readonly IListRepository _listRepository; - public TableService(/*IListRepository listRepository*/) + public TableService(IListRepository listRepository) { - //_listRepository = listRepository; + _listRepository = listRepository; } ///