options helper, optional db connection from CLI
This commit is contained in:
parent
143f708cff
commit
af980b130a
@ -1,7 +1,26 @@
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace Selector.CLI
|
||||
{
|
||||
static class OptionsHelper {
|
||||
public static void ConfigureOptions(RootOptions options, IConfiguration config)
|
||||
{
|
||||
config.GetSection(RootOptions.Key).Bind(options);
|
||||
config.GetSection(FormatKeys( new[] { RootOptions.Key, WatcherOptions.Key})).Bind(options.WatcherOptions);
|
||||
config.GetSection(FormatKeys( new[] { RootOptions.Key, DatabaseOptions.Key})).Bind(options.DatabaseOptions);
|
||||
}
|
||||
|
||||
public static RootOptions ConfigureOptions(IConfiguration config)
|
||||
{
|
||||
var options = config.GetSection(RootOptions.Key).Get<RootOptions>();
|
||||
ConfigureOptions(options, config);
|
||||
return options;
|
||||
}
|
||||
|
||||
public static string FormatKeys(string[] args) => string.Join(":", args);
|
||||
}
|
||||
|
||||
class RootOptions
|
||||
{
|
||||
public const string Key = "Selector";
|
||||
@ -15,6 +34,7 @@ namespace Selector.CLI
|
||||
/// </summary>
|
||||
public string ClientSecret { get; set; }
|
||||
public WatcherOptions WatcherOptions { get; set; } = new();
|
||||
public DatabaseOptions DatabaseOptions { get; set; } = new();
|
||||
public EqualityChecker Equality { get; set; } = EqualityChecker.Uri;
|
||||
}
|
||||
|
||||
@ -56,4 +76,11 @@ namespace Selector.CLI
|
||||
{
|
||||
AudioFeatures
|
||||
}
|
||||
|
||||
class DatabaseOptions {
|
||||
public const string Key = "Database";
|
||||
|
||||
public bool Enabled { get; set; } = false;
|
||||
public string ConnectionString { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,11 @@ using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using NLog.Extensions.Logging;
|
||||
|
||||
using Selector.Model;
|
||||
|
||||
namespace Selector.CLI
|
||||
{
|
||||
class Program
|
||||
@ -18,18 +21,19 @@ namespace Selector.CLI
|
||||
|
||||
static IHostBuilder CreateHostBuilder(string[] args)
|
||||
=> Host.CreateDefaultBuilder(args)
|
||||
.ConfigureServices((context, services) => {
|
||||
|
||||
.ConfigureServices((context, services) =>
|
||||
{
|
||||
Console.WriteLine("~~~ Selector CLI ~~~");
|
||||
Console.WriteLine("");
|
||||
Console.WriteLine();
|
||||
|
||||
Console.WriteLine("> Configuring...");
|
||||
// CONFIG
|
||||
services.Configure<RootOptions>(options => {
|
||||
context.Configuration.GetSection(RootOptions.Key).Bind(options);
|
||||
context.Configuration.GetSection($"{RootOptions.Key}:{WatcherOptions.Key}").Bind(options.WatcherOptions);
|
||||
services.Configure<RootOptions>(options =>
|
||||
{
|
||||
|
||||
OptionsHelper.ConfigureOptions(options, context.Configuration);
|
||||
});
|
||||
var config = context.Configuration.GetSection(RootOptions.Key).Get<RootOptions>();
|
||||
var config = OptionsHelper.ConfigureOptions(context.Configuration);
|
||||
|
||||
Console.WriteLine("> Adding Services...");
|
||||
// SERVICES
|
||||
@ -40,7 +44,15 @@ namespace Selector.CLI
|
||||
//services.AddSingleton<IRefreshTokenFactoryProvider, RefreshTokenFactoryProvider>();
|
||||
services.AddSingleton<IRefreshTokenFactoryProvider, CachingRefreshTokenFactoryProvider>();
|
||||
|
||||
switch(config.Equality)
|
||||
if (config.DatabaseOptions.Enabled)
|
||||
{
|
||||
Console.WriteLine("> Adding Databse Context...");
|
||||
services.AddDbContext<SelectorContext>(options =>
|
||||
options.UseNpgsql(config.DatabaseOptions.ConnectionString)
|
||||
);
|
||||
}
|
||||
|
||||
switch (config.Equality)
|
||||
{
|
||||
case EqualityChecker.Uri:
|
||||
Console.WriteLine("> Using Uri Equality");
|
||||
@ -53,14 +65,15 @@ namespace Selector.CLI
|
||||
}
|
||||
|
||||
// HOSTED SERVICES
|
||||
if(config.WatcherOptions.Enabled)
|
||||
if (config.WatcherOptions.Enabled)
|
||||
{
|
||||
Console.WriteLine("> Adding Watcher Service");
|
||||
services.AddHostedService<WatcherService>();
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
.ConfigureLogging((context, builder) => {
|
||||
.ConfigureLogging((context, builder) =>
|
||||
{
|
||||
builder.ClearProviders();
|
||||
builder.SetMinimumLevel(LogLevel.Trace);
|
||||
builder.AddNLog(context.Configuration);
|
||||
|
@ -12,6 +12,9 @@
|
||||
"consumers": [ "audiofeatures" ]
|
||||
}
|
||||
]
|
||||
},
|
||||
"Database": {
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"Logging": {
|
||||
|
@ -43,10 +43,10 @@ namespace Selector.Web
|
||||
services.Configure<IdentityOptions>(options =>
|
||||
{
|
||||
// Password settings.
|
||||
//options.Password.RequireDigit = true;
|
||||
//options.Password.RequireLowercase = true;
|
||||
//options.Password.RequireNonAlphanumeric = true;
|
||||
//options.Password.RequireUppercase = true;
|
||||
options.Password.RequireDigit = false;
|
||||
options.Password.RequireLowercase = false;
|
||||
options.Password.RequireNonAlphanumeric = false;
|
||||
options.Password.RequireUppercase = false;
|
||||
options.Password.RequiredLength = 3;
|
||||
options.Password.RequiredUniqueChars = 1;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user