From f3ab94eff18c073982f8737c74bf104d339b5f88 Mon Sep 17 00:00:00 2001 From: Janus Knudsen Date: Fri, 7 Mar 2025 16:17:30 +0100 Subject: [PATCH] wip --- .../Enrichers/EnrichWithMetaTelemetry.cs | 14 +-- Core/Telemetry/SeqTelemetryChannel.cs | 22 ++--- .../Users/Create/CreateUserHandler.cs | 2 +- SetupInfrastructure/Program.cs | 85 ++++++++----------- Tests/TestFixture.cs | 21 +---- global.json | 7 ++ 6 files changed, 59 insertions(+), 92 deletions(-) create mode 100644 global.json diff --git a/Core/Telemetry/Enrichers/EnrichWithMetaTelemetry.cs b/Core/Telemetry/Enrichers/EnrichWithMetaTelemetry.cs index ace831a..bd8d7fd 100644 --- a/Core/Telemetry/Enrichers/EnrichWithMetaTelemetry.cs +++ b/Core/Telemetry/Enrichers/EnrichWithMetaTelemetry.cs @@ -3,20 +3,12 @@ using Microsoft.ApplicationInsights.Extensibility; namespace PlanTempus.Core.Telemetry.Enrichers { - - public class EnrichWithMetaTelemetry : ITelemetryProcessor + public class EnrichWithMetaTelemetry(ITelemetryProcessor next) : ITelemetryProcessor { - private readonly ITelemetryProcessor _next; - - public EnrichWithMetaTelemetry(ITelemetryProcessor next) - { - _next = next; - } - public void Process(ITelemetry item) { //nothing going on here yet :) - _next.Process(item); + next.Process(item); } } -} +} \ No newline at end of file diff --git a/Core/Telemetry/SeqTelemetryChannel.cs b/Core/Telemetry/SeqTelemetryChannel.cs index bb3c2ac..23d90ca 100644 --- a/Core/Telemetry/SeqTelemetryChannel.cs +++ b/Core/Telemetry/SeqTelemetryChannel.cs @@ -3,20 +3,12 @@ using Microsoft.ApplicationInsights.Channel; namespace PlanTempus.Core.Telemetry { - public class SeqTelemetryChannel : InMemoryChannel, ITelemetryChannel + public class SeqTelemetryChannel(IMessageChannel messageChannel, TelemetryClient telemetryClient) + : InMemoryChannel, ITelemetryChannel { - private readonly IMessageChannel _messageChannel; - private readonly TelemetryClient _telemetryClient; - - public SeqTelemetryChannel(IMessageChannel messageChannel, TelemetryClient telemetryClient) - { - _messageChannel = messageChannel; - _telemetryClient = telemetryClient; - } public new void Send(ITelemetry telemetry) { - - if (telemetry.Context.GlobalProperties.TryGetValue("OmitSeqTelemetryChannel", out string value)) + if (telemetry.Context.GlobalProperties.TryGetValue("OmitSeqTelemetryChannel", out var value)) if (value == "true") { base.Send(telemetry); @@ -25,7 +17,7 @@ namespace PlanTempus.Core.Telemetry try { - var writeTask = _messageChannel.Writer.WriteAsync(telemetry).AsTask(); + var writeTask = messageChannel.Writer.WriteAsync(telemetry).AsTask(); writeTask.ContinueWith(t => { if (t.Exception != null) @@ -36,9 +28,11 @@ namespace PlanTempus.Core.Telemetry } catch (Exception e) { - _telemetryClient.TrackException(e, new Dictionary { { "OmitSeqTelemetryChannel", "true" } }); + telemetryClient.TrackException(e, + new Dictionary { { "OmitSeqTelemetryChannel", "true" } }); } + base.Send(telemetry); } } -} +} \ No newline at end of file diff --git a/PlanTempus.Components/Users/Create/CreateUserHandler.cs b/PlanTempus.Components/Users/Create/CreateUserHandler.cs index 53240c7..f716409 100644 --- a/PlanTempus.Components/Users/Create/CreateUserHandler.cs +++ b/PlanTempus.Components/Users/Create/CreateUserHandler.cs @@ -17,7 +17,7 @@ namespace PlanTempus.Components.Users.Create try { var sql = @" - INSERT INTO system.users(email, password_hash, security_stamp, email_confirmed, + INSERT INTO system.users(email , password_hash, security_stamp, email_confirmed, access_failed_count, lockout_enabled, is_active) VALUES(@Email, @PasswordHash, @SecurityStamp, @EmailConfirmed, diff --git a/SetupInfrastructure/Program.cs b/SetupInfrastructure/Program.cs index a50e496..febc5bf 100644 --- a/SetupInfrastructure/Program.cs +++ b/SetupInfrastructure/Program.cs @@ -12,34 +12,33 @@ using System.Diagnostics; namespace PlanTempus.SetupInfrastructure { - /// - /// SETUP APPLICATION USER NAMED sathumper - /// - /// This should be handled on the Postgresql db server with a superadmin or similar. - /// - /// Execute SQL CreateRole.txt - /// - /// After that is executed it is time for running this main program - /// Remember to use the newly created sathumper - /// "ConnectionStrings": { - /// "DefaultConnection": "Host=192.168.1.57;Port=5432;Database=ptdb01;User Id=;Password=;" - /// - internal class Program + /// + /// SETUP APPLICATION USER NAMED sathumper + /// + /// This should be handled on the Postgresql db server with a superadmin or similar. + /// + /// Execute SQL CreateRole.txt + /// + /// After that is executed it is time for running this main program + /// Remember to use the newly created sathumper + /// "ConnectionStrings": { + /// "DefaultConnection": "Host=192.168.1.57;Port=5432;Database=ptdb01;User Id=[uid];Password=[secret];" + /// + internal class Program { - static async Task Main(string[] args) { try { var host = Host.CreateDefaultBuilder(args) .UseEnvironment("Dev") - .UseServiceProviderFactory(new Autofac.Extensions.DependencyInjection.AutofacServiceProviderFactory()) + .UseServiceProviderFactory( + new Autofac.Extensions.DependencyInjection.AutofacServiceProviderFactory()) .ConfigureContainer((hostContext, builder) => { var startup = new Startup(); startup.ConfigureContainer(builder); }) - .Build(); await host.StartAsync(); @@ -57,32 +56,24 @@ namespace PlanTempus.SetupInfrastructure } } } - public class ConsoleService - { + public class ConsoleService( + IDbConnectionFactory connectionFactory, + SetupDbAdmin setupDbAdmin, + SetupIdentitySystem setupIdentitySystem, + SetupConfiguration setupConfiguration, + SetupApplicationUser setupApplicationUser) + { static ConsoleColor _backgroundColor = Console.BackgroundColor; static ConsoleColor _foregroundColor = Console.ForegroundColor; - private readonly IDbConnectionFactory _connectionFactory; - private readonly SetupDbAdmin _setupDbAdmin; - private readonly SetupIdentitySystem _setupIdentitySystem; - private readonly SetupConfiguration _setupConfiguration; - private readonly SetupApplicationUser _setupApplicationUser; - public ConsoleService(IDbConnectionFactory connectionFactory, SetupDbAdmin setupDbAdmin, SetupIdentitySystem setupIdentitySystem, SetupConfiguration setupConfiguration, SetupApplicationUser setupApplicationUser) - { - _connectionFactory = connectionFactory; - _setupDbAdmin = setupDbAdmin; - _setupIdentitySystem = setupIdentitySystem; - _setupConfiguration = setupConfiguration; - _setupApplicationUser = setupApplicationUser; - } bool IsSuperAdmin(ConnectionStringParameters parameters) { Console.WriteLine("Testing db access..."); string query = @"SELECT usename, usesuper FROM pg_user WHERE usename = CURRENT_USER;"; - using var conn = _connectionFactory.Create(parameters); + using var conn = connectionFactory.Create(parameters); var result = (dynamic)conn.QuerySql(query).Single(); string username = result.usename; @@ -131,9 +122,8 @@ namespace PlanTempus.SetupInfrastructure Console.Read(); return false; - - } + static void Welcome() { Console.ForegroundColor = ConsoleColor.Blue; @@ -151,7 +141,6 @@ namespace PlanTempus.SetupInfrastructure \/ \/ |__|"); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.White; - } public void Run() @@ -165,9 +154,9 @@ namespace PlanTempus.SetupInfrastructure { Console.WriteLine("Input username:password for a superadmin role"); userPass = Console.ReadLine() ?? string.Empty; - } while (!userPass.Contains(":") || userPass.Split(":").Length != 2 || - string.IsNullOrEmpty(userPass.Split(":")[0]) || - string.IsNullOrEmpty(userPass.Split(":")[1])); + } while (!userPass.Contains(':') || userPass.Split(":").Length != 2 || + string.IsNullOrEmpty(userPass.Split(":")[0]) || + string.IsNullOrEmpty(userPass.Split(":")[1])); var superUser = new ConnectionStringParameters( User: userPass.Split(":")[0], @@ -182,7 +171,9 @@ namespace PlanTempus.SetupInfrastructure Console.Write("Database.Core.DCL.SetupDbAdmin..."); sw.Start(); - _setupDbAdmin.With(new SetupDbAdmin.Command { Password = "3911", Schema = "system", User = "heimdall" }, superUser); + setupDbAdmin.With( + new SetupDbAdmin.Command + { Password = "3911", Schema = "system", User = "heimdall" }, superUser); Console.WriteLine($"DONE, took: {sw.ElapsedMilliseconds} ms"); Console.WriteLine("::"); @@ -193,14 +184,14 @@ namespace PlanTempus.SetupInfrastructure //use application user, we use that role from now. var connParams = new ConnectionStringParameters(User: "heimdall", Pwd: "3911"); - _setupIdentitySystem.With(new SetupIdentitySystem.Command { Schema = "system" }, connParams); + setupIdentitySystem.With(new SetupIdentitySystem.Command { Schema = "system" }, connParams); Console.WriteLine($"DONE, took: {sw.ElapsedMilliseconds} ms"); Console.WriteLine("::"); Console.WriteLine("::"); Console.Write("Database.ConfigurationManagementSystem.SetupConfiguration..."); sw.Restart(); - _setupConfiguration.With(new SetupConfiguration.Command(), connParams); + setupConfiguration.With(new SetupConfiguration.Command(), connParams); Console.Write($"DONE, took: {sw.ElapsedMilliseconds} ms"); @@ -209,7 +200,9 @@ namespace PlanTempus.SetupInfrastructure Console.Write("Database.Core.DCL.SetupApplicationUser..."); sw.Start(); - _setupApplicationUser.With(new SetupApplicationUser.Command { Password = "3911", Schema = "system", User = "sathumper" }, superUser); + setupApplicationUser.With( + new SetupApplicationUser.Command { Password = "3911", Schema = "system", User = "sathumper" }, + superUser); Console.WriteLine($"DONE, took: {sw.ElapsedMilliseconds} ms"); @@ -219,7 +212,6 @@ namespace PlanTempus.SetupInfrastructure Console.ForegroundColor = _foregroundColor; } - } catch (Exception e) @@ -227,12 +219,7 @@ namespace PlanTempus.SetupInfrastructure Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(); Console.WriteLine(e); - } - } } - - -} - \ No newline at end of file +} \ No newline at end of file diff --git a/Tests/TestFixture.cs b/Tests/TestFixture.cs index 941f54b..53385ac 100644 --- a/Tests/TestFixture.cs +++ b/Tests/TestFixture.cs @@ -46,18 +46,6 @@ public abstract class TestFixture protected virtual void CreateContainerBuilder() { var configuration = Configuration(); - - //var logger = new LoggerConfiguration() - // .MinimumLevel.Verbose() - // .MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Warning) - // .MinimumLevel.Override("System", Serilog.Events.LogEventLevel.Error) - // .WriteTo.Seq("http://localhost:5341", apiKey: "Gt8hS9ClGNfOCAdswDlW") - // .WriteTo.ApplicationInsights(configuration.Get("ApplicationInsights:ConnectionString"), - // TelemetryConverter.Traces) - // .Enrich.FromLogContext() - // .Enrich.WithMachineName() - // .CreateLogger(); - var builder = new ContainerBuilder(); builder.RegisterGeneric(typeof(Logger<>)) @@ -90,10 +78,9 @@ public abstract class TestFixture var telemetryClient = Container.Resolve(); telemetryClient.Flush(); - if (Container != null) - { - Container.Dispose(); - Container = null; - } + if (Container is null) return; + + Container.Dispose(); + Container = null; } } \ No newline at end of file diff --git a/global.json b/global.json new file mode 100644 index 0000000..f4fd385 --- /dev/null +++ b/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "9.0.0", + "rollForward": "latestMajor", + "allowPrerelease": true + } +} \ No newline at end of file