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