diff --git a/Snittlistan.Queue.ConsoleHost/Program.cs b/Snittlistan.Queue.ConsoleHost/Program.cs index 5d53c6ff..1036093c 100644 --- a/Snittlistan.Queue.ConsoleHost/Program.cs +++ b/Snittlistan.Queue.ConsoleHost/Program.cs @@ -4,9 +4,7 @@ namespace Snittlistan.Queue.ConsoleHost { using System; using System.Configuration; - using Npgsql.Logging; using Snittlistan.Queue.Config; - using Snittlistan.Queue.Infrastructure; public class Program { @@ -14,8 +12,6 @@ public static void Main() { Console.WriteLine("Press [ENTER] to start."); _ = Console.ReadLine(); - NpgsqlLogManager.Provider = new NLogLoggingProvider(); - NpgsqlLogManager.IsParameterLoggingEnabled = true; Application application = new( (MessagingConfigSection)ConfigurationManager.GetSection("messaging"), ConfigurationManager.AppSettings["UrlScheme"], diff --git a/Snittlistan.Queue.ConsoleHost/packages.lock.json b/Snittlistan.Queue.ConsoleHost/packages.lock.json index 0ebe6784..b96c7c82 100644 --- a/Snittlistan.Queue.ConsoleHost/packages.lock.json +++ b/Snittlistan.Queue.ConsoleHost/packages.lock.json @@ -14,20 +14,6 @@ "resolved": "4.7.12", "contentHash": "cFe+YQVxghBt4hoB8IH+XVW/vyS6rWJPfWmm0rmgS/iaI3lzzFsGRzjw3VhByovLugw7Zp3kY7nVUWADCu6n2g==" }, - "EntityFramework": { - "type": "Transitive", - "resolved": "6.4.0", - "contentHash": "7jDmcQ3jaN5G7ZJC7Ecq161zQBs/5LqRzBdZ/I4XfmSvOwteGgNjOi30kthFador4Qjo3qUU6iOB1H04GIXrpg==" - }, - "EntityFramework6.Npgsql": { - "type": "Transitive", - "resolved": "6.4.3", - "contentHash": "iZnc+FlaBaK97zGHR0KS0bnwKQ2gWPpaOoSYNHfjLZ4lr4UEPRFQnh/bpW9Q50ZbNNbDRCs+W12QyVn+sKsSwA==", - "dependencies": { - "EntityFramework": "6.4.0", - "Npgsql": "4.1.3" - } - }, "Microsoft.AspNet.WebApi.Client": { "type": "Transitive", "resolved": "5.2.7", @@ -36,14 +22,6 @@ "Newtonsoft.Json": "6.0.4" } }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "K63Y4hORbBcKLWH5wnKgzyn7TOfYzevIEwIedQHBIkmkEBA9SCqgvom+XTuE+fAFGvINGkhFItaZ2dvMGdT5iw==", - "dependencies": { - "System.Threading.Tasks.Extensions": "4.5.2" - } - }, "MicrosoftWebMvc": { "type": "Transitive", "resolved": "2.0.0", @@ -70,83 +48,9 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "Npgsql": { - "type": "Transitive", - "resolved": "4.1.3", - "contentHash": "sWTXCb6WPPO7WEw4+1XoRqE49EdWmuyMA15LVbzV6jZgRxYWK8TbdniWMjguzmAgOZVYTmrCf+jsqPYoSqACvA==", - "dependencies": { - "System.Memory": "4.5.3", - "System.Runtime.CompilerServices.Unsafe": "4.6.0", - "System.Text.Json": "4.6.0", - "System.Threading.Tasks.Extensions": "4.5.3", - "System.ValueTuple": "4.5.0" - } - }, - "System.Buffers": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==" - }, - "System.Memory": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", - "dependencies": { - "System.Buffers": "4.4.0", - "System.Numerics.Vectors": "4.4.0", - "System.Runtime.CompilerServices.Unsafe": "4.5.2" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "HxozeSlipUK7dAroTYwIcGwKDeOVpQnJlpVaOkBz7CM4TsE5b/tKlQBZecTjh6FzcSbxndYaxxpsBMz+wMJeyw==" - }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "BXgFO8Yi7ao7hVA/nklD0Hre1Bbce048ZqryGZVFifGNPuh+2jqF1i/jLJLMfFGZIzUOw+nCIeH24SQhghDSPw==", - "dependencies": { - "System.Memory": "4.5.3" - } - }, - "System.Text.Json": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "4F8Xe+JIkVoDJ8hDAZ7HqLkjctN/6WItJIzQaifBwClC7wmoLSda/Sv2i6i1kycqDb3hWF4JCVbpAweyOKHEUA==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.0.0", - "System.Buffers": "4.5.0", - "System.Memory": "4.5.3", - "System.Numerics.Vectors": "4.5.0", - "System.Runtime.CompilerServices.Unsafe": "4.6.0", - "System.Text.Encodings.Web": "4.6.0", - "System.Threading.Tasks.Extensions": "4.5.2", - "System.ValueTuple": "4.5.0" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "4.5.2" - } - }, - "System.ValueTuple": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==" - }, "snittlistan.queue": { "type": "Project", "dependencies": { - "EntityFramework6.Npgsql": "6.4.3", "Lindhart.Analyser.MissingAwaitWarning": "2.0.0", "Microsoft.AspNet.WebApi.Client": "5.2.7", "MvcContrib": "2.0.95", diff --git a/Snittlistan.Queue.WindowsServiceHost/App.config b/Snittlistan.Queue.WindowsServiceHost/App.config index 172de8b0..bcac9338 100644 --- a/Snittlistan.Queue.WindowsServiceHost/App.config +++ b/Snittlistan.Queue.WindowsServiceHost/App.config @@ -2,15 +2,11 @@
-
- - - @@ -22,18 +18,6 @@ - - - - - - - - - - - - diff --git a/Snittlistan.Queue.WindowsServiceHost/Program.cs b/Snittlistan.Queue.WindowsServiceHost/Program.cs index a1515a79..e4d0fe68 100644 --- a/Snittlistan.Queue.WindowsServiceHost/Program.cs +++ b/Snittlistan.Queue.WindowsServiceHost/Program.cs @@ -5,8 +5,6 @@ namespace Snittlistan.Queue.WindowsServiceHost using System; using System.ServiceProcess; using NLog; - using Npgsql.Logging; - using Snittlistan.Queue.Infrastructure; public static class Program { @@ -17,8 +15,6 @@ public static void Main() try { Logger.Info("Starting queue service host"); - NpgsqlLogManager.Provider = new NLogLoggingProvider(); - NpgsqlLogManager.IsParameterLoggingEnabled = true; Run(); } catch (Exception ex) diff --git a/Snittlistan.Queue.WindowsServiceHost/packages.lock.json b/Snittlistan.Queue.WindowsServiceHost/packages.lock.json index 0ebe6784..b96c7c82 100644 --- a/Snittlistan.Queue.WindowsServiceHost/packages.lock.json +++ b/Snittlistan.Queue.WindowsServiceHost/packages.lock.json @@ -14,20 +14,6 @@ "resolved": "4.7.12", "contentHash": "cFe+YQVxghBt4hoB8IH+XVW/vyS6rWJPfWmm0rmgS/iaI3lzzFsGRzjw3VhByovLugw7Zp3kY7nVUWADCu6n2g==" }, - "EntityFramework": { - "type": "Transitive", - "resolved": "6.4.0", - "contentHash": "7jDmcQ3jaN5G7ZJC7Ecq161zQBs/5LqRzBdZ/I4XfmSvOwteGgNjOi30kthFador4Qjo3qUU6iOB1H04GIXrpg==" - }, - "EntityFramework6.Npgsql": { - "type": "Transitive", - "resolved": "6.4.3", - "contentHash": "iZnc+FlaBaK97zGHR0KS0bnwKQ2gWPpaOoSYNHfjLZ4lr4UEPRFQnh/bpW9Q50ZbNNbDRCs+W12QyVn+sKsSwA==", - "dependencies": { - "EntityFramework": "6.4.0", - "Npgsql": "4.1.3" - } - }, "Microsoft.AspNet.WebApi.Client": { "type": "Transitive", "resolved": "5.2.7", @@ -36,14 +22,6 @@ "Newtonsoft.Json": "6.0.4" } }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "K63Y4hORbBcKLWH5wnKgzyn7TOfYzevIEwIedQHBIkmkEBA9SCqgvom+XTuE+fAFGvINGkhFItaZ2dvMGdT5iw==", - "dependencies": { - "System.Threading.Tasks.Extensions": "4.5.2" - } - }, "MicrosoftWebMvc": { "type": "Transitive", "resolved": "2.0.0", @@ -70,83 +48,9 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "Npgsql": { - "type": "Transitive", - "resolved": "4.1.3", - "contentHash": "sWTXCb6WPPO7WEw4+1XoRqE49EdWmuyMA15LVbzV6jZgRxYWK8TbdniWMjguzmAgOZVYTmrCf+jsqPYoSqACvA==", - "dependencies": { - "System.Memory": "4.5.3", - "System.Runtime.CompilerServices.Unsafe": "4.6.0", - "System.Text.Json": "4.6.0", - "System.Threading.Tasks.Extensions": "4.5.3", - "System.ValueTuple": "4.5.0" - } - }, - "System.Buffers": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==" - }, - "System.Memory": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", - "dependencies": { - "System.Buffers": "4.4.0", - "System.Numerics.Vectors": "4.4.0", - "System.Runtime.CompilerServices.Unsafe": "4.5.2" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "HxozeSlipUK7dAroTYwIcGwKDeOVpQnJlpVaOkBz7CM4TsE5b/tKlQBZecTjh6FzcSbxndYaxxpsBMz+wMJeyw==" - }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "BXgFO8Yi7ao7hVA/nklD0Hre1Bbce048ZqryGZVFifGNPuh+2jqF1i/jLJLMfFGZIzUOw+nCIeH24SQhghDSPw==", - "dependencies": { - "System.Memory": "4.5.3" - } - }, - "System.Text.Json": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "4F8Xe+JIkVoDJ8hDAZ7HqLkjctN/6WItJIzQaifBwClC7wmoLSda/Sv2i6i1kycqDb3hWF4JCVbpAweyOKHEUA==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.0.0", - "System.Buffers": "4.5.0", - "System.Memory": "4.5.3", - "System.Numerics.Vectors": "4.5.0", - "System.Runtime.CompilerServices.Unsafe": "4.6.0", - "System.Text.Encodings.Web": "4.6.0", - "System.Threading.Tasks.Extensions": "4.5.2", - "System.ValueTuple": "4.5.0" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "4.5.2" - } - }, - "System.ValueTuple": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==" - }, "snittlistan.queue": { "type": "Project", "dependencies": { - "EntityFramework6.Npgsql": "6.4.3", "Lindhart.Analyser.MissingAwaitWarning": "2.0.0", "Microsoft.AspNet.WebApi.Client": "5.2.7", "MvcContrib": "2.0.95", diff --git a/Snittlistan.Queue/Application.cs b/Snittlistan.Queue/Application.cs index 66fd2ddc..2a5041a5 100644 --- a/Snittlistan.Queue/Application.cs +++ b/Snittlistan.Queue/Application.cs @@ -26,7 +26,10 @@ public void Start() { foreach (QueueListenerElement listener in messagingConfigSection.QueueListeners.Listeners) { - TaskQueueListener taskQueueListener = new(listener.CreateSettings(), urlScheme, port); + TaskQueueListener taskQueueListener = new( + listener.CreateSettings(), + urlScheme, + port); taskQueueListener.Start(); taskQueueListeners.Add(taskQueueListener); } diff --git a/Snittlistan.Queue/Commands/CommandBase.cs b/Snittlistan.Queue/Commands/CommandBase.cs new file mode 100644 index 00000000..1e8e6a43 --- /dev/null +++ b/Snittlistan.Queue/Commands/CommandBase.cs @@ -0,0 +1,16 @@ +#nullable enable + +namespace Snittlistan.Queue.Commands +{ + using System; + + public abstract class CommandBase + { + public CommandBase() + { + CorrelationId = Guid.NewGuid(); + } + + public Guid CorrelationId { get; } + } +} diff --git a/Snittlistan.Queue/Commands/GetPlayersFromBitsCommand.cs b/Snittlistan.Queue/Commands/GetPlayersFromBitsCommand.cs new file mode 100644 index 00000000..dec30577 --- /dev/null +++ b/Snittlistan.Queue/Commands/GetPlayersFromBitsCommand.cs @@ -0,0 +1,8 @@ +#nullable enable + +namespace Snittlistan.Queue.Commands +{ + public class GetPlayersFromBitsCommand : CommandBase + { + } +} diff --git a/Snittlistan.Queue/Commands/GetRostersFromBitsCommand.cs b/Snittlistan.Queue/Commands/GetRostersFromBitsCommand.cs new file mode 100644 index 00000000..af00cec9 --- /dev/null +++ b/Snittlistan.Queue/Commands/GetRostersFromBitsCommand.cs @@ -0,0 +1,8 @@ +#nullable enable + +namespace Snittlistan.Queue.Commands +{ + public class GetRostersFromBitsCommand : CommandBase + { + } +} diff --git a/Snittlistan.Queue/Commands/InitializeIndexesCommand.cs b/Snittlistan.Queue/Commands/InitializeIndexesCommand.cs new file mode 100644 index 00000000..a38cd2d7 --- /dev/null +++ b/Snittlistan.Queue/Commands/InitializeIndexesCommand.cs @@ -0,0 +1,17 @@ +#nullable enable + +namespace Snittlistan.Queue.Commands +{ + public class InitializeIndexesCommand : CommandBase + { + public InitializeIndexesCommand(string email, string password) + { + Email = email; + Password = password; + } + + public string Email { get; } + + public string Password { get; } + } +} diff --git a/Snittlistan.Queue/Commands/RegisterMatchesCommand.cs b/Snittlistan.Queue/Commands/RegisterMatchesCommand.cs new file mode 100644 index 00000000..ea1e55c6 --- /dev/null +++ b/Snittlistan.Queue/Commands/RegisterMatchesCommand.cs @@ -0,0 +1,8 @@ +#nullable enable + +namespace Snittlistan.Queue.Commands +{ + public class RegisterMatchesCommand : CommandBase + { + } +} diff --git a/Snittlistan.Queue/Commands/VerifyMatchesCommand.cs b/Snittlistan.Queue/Commands/VerifyMatchesCommand.cs new file mode 100644 index 00000000..3af45849 --- /dev/null +++ b/Snittlistan.Queue/Commands/VerifyMatchesCommand.cs @@ -0,0 +1,14 @@ +#nullable enable + +namespace Snittlistan.Queue.Commands +{ + public class VerifyMatchesCommand : CommandBase + { + public VerifyMatchesCommand(bool force) + { + Force = force; + } + + public bool Force { get; } + } +} diff --git a/Snittlistan.Queue/Counter.cs b/Snittlistan.Queue/Counter.cs index 6b1b5d49..f26aeb5b 100644 --- a/Snittlistan.Queue/Counter.cs +++ b/Snittlistan.Queue/Counter.cs @@ -1,4 +1,5 @@ -// ReSharper disable UseNameofExpression +#nullable enable + namespace Snittlistan.Queue { using System.Diagnostics; @@ -16,12 +17,12 @@ public class Counter public void Increment() { - Interlocked.Increment(ref _value); + _ = Interlocked.Increment(ref _value); } public void Decrement() { - Interlocked.Decrement(ref _value); + _ = Interlocked.Decrement(ref _value); } } -} \ No newline at end of file +} diff --git a/Snittlistan.Queue/Infrastructure/DatabaseContext.cs b/Snittlistan.Queue/Infrastructure/DatabaseContext.cs deleted file mode 100644 index 3686bf2e..00000000 --- a/Snittlistan.Queue/Infrastructure/DatabaseContext.cs +++ /dev/null @@ -1,22 +0,0 @@ -#nullable enable - -namespace Snittlistan.Queue.Infrastructure -{ - using System.Data.Entity; - using Npgsql.NameTranslation; - - public class DatabaseContext : DbContext - { - public DbSet Tenants { get; set; } = null!; - - protected override void OnModelCreating(DbModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - Database.SetInitializer(new NullDatabaseInitializer()); - NpgsqlSnakeCaseNameTranslator mapper = new(); - _ = modelBuilder.HasDefaultSchema("public"); - modelBuilder.Properties().Configure(x => x.HasColumnName(mapper.TranslateMemberName(x.ClrPropertyInfo.Name))); - modelBuilder.Types().Configure(x => x.ToTable(mapper.TranslateMemberName(x.ClrType.Name))); - } - } -} diff --git a/Snittlistan.Queue/Infrastructure/Tenant.cs b/Snittlistan.Queue/Infrastructure/Tenant.cs deleted file mode 100644 index 8d292ffe..00000000 --- a/Snittlistan.Queue/Infrastructure/Tenant.cs +++ /dev/null @@ -1,12 +0,0 @@ -#nullable enable - -namespace Snittlistan.Queue.Infrastructure -{ - // TODO remove - public class Tenant - { - public int TenantId { get; set; } - - public string Hostname { get; set; } = null!; - } -} diff --git a/Snittlistan.Queue/Messages/IsExternalInit.cs b/Snittlistan.Queue/IsExternalInit.cs similarity index 100% rename from Snittlistan.Queue/Messages/IsExternalInit.cs rename to Snittlistan.Queue/IsExternalInit.cs diff --git a/Snittlistan.Queue/Messages/EmailTask.cs b/Snittlistan.Queue/Messages/EmailTask.cs index e12b79ba..67383a54 100644 --- a/Snittlistan.Queue/Messages/EmailTask.cs +++ b/Snittlistan.Queue/Messages/EmailTask.cs @@ -6,10 +6,11 @@ namespace Snittlistan.Queue.Messages using System.Text; using Newtonsoft.Json; - public class EmailTask : ITask + public class EmailTask : TaskBase { [JsonConstructor] private EmailTask(string to, string subject, string content) + : base(new(typeof(EmailTask), to)) { To = to; Subject = subject; @@ -42,8 +43,6 @@ public static EmailTask Create(string recipient, string subject, string content) public string Content { get; } - public BusinessKey BusinessKey => new(GetType(), To); - public override string ToString() { StringBuilder builder = new(); diff --git a/Snittlistan.Queue/Messages/GetPlayersFromBitsTask.cs b/Snittlistan.Queue/Messages/GetPlayersFromBitsTask.cs index 314241d2..d73ab9d6 100644 --- a/Snittlistan.Queue/Messages/GetPlayersFromBitsTask.cs +++ b/Snittlistan.Queue/Messages/GetPlayersFromBitsTask.cs @@ -2,8 +2,11 @@ namespace Snittlistan.Queue.Messages { - public class GetPlayersFromBitsTask : ITask + public class GetPlayersFromBitsTask : TaskBase { - public BusinessKey BusinessKey => new(GetType(), string.Empty); + public GetPlayersFromBitsTask() + : base(new(typeof(GetPlayersFromBitsTask), string.Empty)) + { + } } } diff --git a/Snittlistan.Queue/Messages/GetRostersFromBitsTask.cs b/Snittlistan.Queue/Messages/GetRostersFromBitsTask.cs index 3b90fdb5..806fbf3e 100644 --- a/Snittlistan.Queue/Messages/GetRostersFromBitsTask.cs +++ b/Snittlistan.Queue/Messages/GetRostersFromBitsTask.cs @@ -2,8 +2,11 @@ namespace Snittlistan.Queue.Messages { - public class GetRostersFromBitsTask : ITask + public class GetRostersFromBitsTask : TaskBase { - public BusinessKey BusinessKey => new(GetType(), string.Empty); + public GetRostersFromBitsTask() + : base(new(typeof(GetRostersFromBitsTask), string.Empty)) + { + } } } diff --git a/Snittlistan.Queue/Messages/ITask.cs b/Snittlistan.Queue/Messages/ITask.cs deleted file mode 100644 index 72cbe87d..00000000 --- a/Snittlistan.Queue/Messages/ITask.cs +++ /dev/null @@ -1,9 +0,0 @@ -#nullable enable - -namespace Snittlistan.Queue.Messages -{ - public interface ITask - { - BusinessKey BusinessKey { get; } - } -} diff --git a/Snittlistan.Queue/Messages/InitializeIndexesTask.cs b/Snittlistan.Queue/Messages/InitializeIndexesTask.cs index 504ce700..a07bce5f 100644 --- a/Snittlistan.Queue/Messages/InitializeIndexesTask.cs +++ b/Snittlistan.Queue/Messages/InitializeIndexesTask.cs @@ -2,9 +2,10 @@ namespace Snittlistan.Queue.Messages { - public class InitializeIndexesTask : ITask + public class InitializeIndexesTask : TaskBase { public InitializeIndexesTask(string email, string password) + : base(new(typeof(InitializeIndexesTask), string.Empty)) { Email = email; Password = password; @@ -13,7 +14,5 @@ public InitializeIndexesTask(string email, string password) public string Email { get; } public string Password { get; } - - public BusinessKey BusinessKey => new(GetType(), string.Empty); } } diff --git a/Snittlistan.Queue/Messages/InitiateUpdateMailTask.cs b/Snittlistan.Queue/Messages/InitiateUpdateMailTask.cs index 0aba90b2..f7fafa74 100644 --- a/Snittlistan.Queue/Messages/InitiateUpdateMailTask.cs +++ b/Snittlistan.Queue/Messages/InitiateUpdateMailTask.cs @@ -4,9 +4,10 @@ namespace Snittlistan.Queue.Messages { using System; - public class InitiateUpdateMailTask : ITask + public class InitiateUpdateMailTask : TaskBase { public InitiateUpdateMailTask(string rosterId, int _, Guid correlationId) + : base(new(typeof(InitiateUpdateMailTask), rosterId)) { RosterId = rosterId; CorrelationId = correlationId; @@ -15,7 +16,5 @@ public InitiateUpdateMailTask(string rosterId, int _, Guid correlationId) public string RosterId { get; } public Guid CorrelationId { get; } - - public BusinessKey BusinessKey => new(GetType(), RosterId); } } diff --git a/Snittlistan.Queue/Messages/MatchRegisteredTask.cs b/Snittlistan.Queue/Messages/MatchRegisteredTask.cs index c63a49b0..c7e9c4b8 100644 --- a/Snittlistan.Queue/Messages/MatchRegisteredTask.cs +++ b/Snittlistan.Queue/Messages/MatchRegisteredTask.cs @@ -2,9 +2,10 @@ namespace Snittlistan.Queue.Messages { - public class MatchRegisteredTask : ITask + public class MatchRegisteredTask : TaskBase { public MatchRegisteredTask(string rosterId, int bitsMatchId, int score, int opponentScore) + : base(new(typeof(MatchRegisteredTask), $"{rosterId}/{bitsMatchId}")) { RosterId = rosterId; BitsMatchId = bitsMatchId; @@ -19,7 +20,5 @@ public MatchRegisteredTask(string rosterId, int bitsMatchId, int score, int oppo public int Score { get; } public int OpponentScore { get; } - - public BusinessKey BusinessKey => new(GetType(), $"{RosterId}/{BitsMatchId}"); } } diff --git a/Snittlistan.Queue/Messages/MessageEnvelope.cs b/Snittlistan.Queue/Messages/MessageEnvelope.cs index 3c3eb3f6..d2da1866 100644 --- a/Snittlistan.Queue/Messages/MessageEnvelope.cs +++ b/Snittlistan.Queue/Messages/MessageEnvelope.cs @@ -9,12 +9,14 @@ public class MessageEnvelope public MessageEnvelope( object payload, int tenantId, + string hostname, Guid correlationId, Guid? causationId, Guid messageId) { Payload = payload; TenantId = tenantId; + Hostname = hostname; CorrelationId = correlationId; CausationId = causationId; MessageId = messageId; @@ -24,6 +26,8 @@ public MessageEnvelope( public int TenantId { get; } + public string Hostname { get; } + public Guid CorrelationId { get; } public Guid? CausationId { get; } diff --git a/Snittlistan.Queue/Messages/NewUserCreatedTask.cs b/Snittlistan.Queue/Messages/NewUserCreatedTask.cs index 4a3b68ac..a5815735 100644 --- a/Snittlistan.Queue/Messages/NewUserCreatedTask.cs +++ b/Snittlistan.Queue/Messages/NewUserCreatedTask.cs @@ -2,9 +2,10 @@ namespace Snittlistan.Queue.Messages { - public class NewUserCreatedTask : ITask + public class NewUserCreatedTask : TaskBase { public NewUserCreatedTask(string email, string activationKey, string userId) + : base(new(typeof(NewUserCreatedTask), $"{email}/{userId}")) { Email = email; ActivationKey = activationKey; @@ -16,7 +17,5 @@ public NewUserCreatedTask(string email, string activationKey, string userId) public string ActivationKey { get; } public string UserId { get; } - - public BusinessKey BusinessKey => new(GetType(), $"{Email}/{UserId}"); } } diff --git a/Snittlistan.Queue/Messages/OneTimeKeyTask.cs b/Snittlistan.Queue/Messages/OneTimeKeyTask.cs index 7617af53..0296d1b6 100644 --- a/Snittlistan.Queue/Messages/OneTimeKeyTask.cs +++ b/Snittlistan.Queue/Messages/OneTimeKeyTask.cs @@ -2,9 +2,10 @@ namespace Snittlistan.Queue.Messages { - public class OneTimeKeyTask : ITask + public class OneTimeKeyTask : TaskBase { public OneTimeKeyTask(string email, string oneTimePassword) + : base(new(typeof(OneTimeKeyTask), email)) { Subject = "Logga in till Snittlistan"; Email = email; @@ -16,7 +17,5 @@ public OneTimeKeyTask(string email, string oneTimePassword) public string Email { get; } public string OneTimePassword { get; } - - public BusinessKey BusinessKey => new(GetType(), $"{Email}"); } } diff --git a/Snittlistan.Queue/Messages/RegisterMatchTask.cs b/Snittlistan.Queue/Messages/RegisterMatchTask.cs index 0779046a..9daaa570 100644 --- a/Snittlistan.Queue/Messages/RegisterMatchTask.cs +++ b/Snittlistan.Queue/Messages/RegisterMatchTask.cs @@ -2,9 +2,10 @@ namespace Snittlistan.Queue.Messages { - public class RegisterMatchTask : ITask + public class RegisterMatchTask : TaskBase { public RegisterMatchTask(string rosterId, int bitsMatchId) + : base(new(typeof(RegisterMatchTask), $"{rosterId}/{bitsMatchId}")) { RosterId = rosterId; BitsMatchId = bitsMatchId; @@ -13,7 +14,5 @@ public RegisterMatchTask(string rosterId, int bitsMatchId) public string RosterId { get; } public int BitsMatchId { get; } - - public BusinessKey BusinessKey => new(GetType(), $"{RosterId}/{BitsMatchId}"); } } diff --git a/Snittlistan.Queue/Messages/RegisterMatchesTask.cs b/Snittlistan.Queue/Messages/RegisterMatchesTask.cs index 456031f7..9d566dea 100644 --- a/Snittlistan.Queue/Messages/RegisterMatchesTask.cs +++ b/Snittlistan.Queue/Messages/RegisterMatchesTask.cs @@ -2,8 +2,11 @@ namespace Snittlistan.Queue.Messages { - public class RegisterMatchesTask : ITask + public class RegisterMatchesTask : TaskBase { - public BusinessKey BusinessKey => new(GetType(), string.Empty); + public RegisterMatchesTask() + : base(new(typeof(RegisterMatchesTask), string.Empty)) + { + } } } diff --git a/Snittlistan.Queue/Messages/SendUpdateMailTask.cs b/Snittlistan.Queue/Messages/SendUpdateMailTask.cs index 7dc05b6c..2d978dd3 100644 --- a/Snittlistan.Queue/Messages/SendUpdateMailTask.cs +++ b/Snittlistan.Queue/Messages/SendUpdateMailTask.cs @@ -2,23 +2,17 @@ namespace Snittlistan.Queue.Messages { - using System; - - public class SendUpdateMailTask : ITask + public class SendUpdateMailTask : TaskBase { - public SendUpdateMailTask(string rosterId, string playerId, Guid correlationId) + public SendUpdateMailTask(string rosterId, string playerId) + : base(new(typeof(SendUpdateMailTask), $"{rosterId}/{playerId}")) { RosterId = rosterId; PlayerId = playerId; - CorrelationId = correlationId; } public string RosterId { get; } public string PlayerId { get; } - - public Guid CorrelationId { get; } - - public BusinessKey BusinessKey => new(GetType(), $"{RosterId}/{PlayerId}"); } } diff --git a/Snittlistan.Queue/Messages/TaskBase.cs b/Snittlistan.Queue/Messages/TaskBase.cs new file mode 100644 index 00000000..0536adb8 --- /dev/null +++ b/Snittlistan.Queue/Messages/TaskBase.cs @@ -0,0 +1,14 @@ +#nullable enable + +namespace Snittlistan.Queue.Messages +{ + public abstract class TaskBase + { + protected TaskBase(BusinessKey businessKey) + { + BusinessKey = businessKey; + } + + public BusinessKey BusinessKey { get; } + } +} diff --git a/Snittlistan.Queue/Messages/TaskRequest.cs b/Snittlistan.Queue/Messages/TaskRequest.cs index e705179c..16378cbd 100644 --- a/Snittlistan.Queue/Messages/TaskRequest.cs +++ b/Snittlistan.Queue/Messages/TaskRequest.cs @@ -20,6 +20,8 @@ public TaskRequest(MessageEnvelope envelope) MessageId = envelope.MessageId; } + public int TenantId { get; } + public string TaskJson { get; } public Guid CorrelationId { get; } diff --git a/Snittlistan.Queue/Messages/UserInvitedTask.cs b/Snittlistan.Queue/Messages/UserInvitedTask.cs index d6c75353..ac849cd9 100644 --- a/Snittlistan.Queue/Messages/UserInvitedTask.cs +++ b/Snittlistan.Queue/Messages/UserInvitedTask.cs @@ -4,9 +4,10 @@ namespace Snittlistan.Queue.Messages { using System; - public class UserInvitedTask : ITask + public class UserInvitedTask : TaskBase { public UserInvitedTask(string activationUri, string email) + : base(new(typeof(UserInvitedTask), email)) { ActivationUri = activationUri ?? throw new ArgumentNullException(nameof(activationUri)); Email = email; @@ -15,7 +16,5 @@ public UserInvitedTask(string activationUri, string email) public string ActivationUri { get; } public string Email { get; } - - public BusinessKey BusinessKey => new(GetType(), Email); } } diff --git a/Snittlistan.Queue/Messages/VerifyMatchTask.cs b/Snittlistan.Queue/Messages/VerifyMatchTask.cs index cb83a30c..842238a1 100644 --- a/Snittlistan.Queue/Messages/VerifyMatchTask.cs +++ b/Snittlistan.Queue/Messages/VerifyMatchTask.cs @@ -2,9 +2,10 @@ namespace Snittlistan.Queue.Messages { - public class VerifyMatchTask : ITask + public class VerifyMatchTask : TaskBase { public VerifyMatchTask(int bitsMatchId, string rosterId, bool force) + : base(new(typeof(VerifyMatchTask), $"{rosterId}/{bitsMatchId}")) { BitsMatchId = bitsMatchId; RosterId = rosterId; @@ -17,8 +18,6 @@ public VerifyMatchTask(int bitsMatchId, string rosterId, bool force) public bool Force { get; } - public BusinessKey BusinessKey => new(GetType(), $"{RosterId}/{BitsMatchId}"); - public override string ToString() { return $"VerifyMatch RosterId={RosterId} BitsMatchid={BitsMatchId} Force={Force}"; diff --git a/Snittlistan.Queue/Messages/VerifyMatchesTask.cs b/Snittlistan.Queue/Messages/VerifyMatchesTask.cs index e4b9760a..a7697c23 100644 --- a/Snittlistan.Queue/Messages/VerifyMatchesTask.cs +++ b/Snittlistan.Queue/Messages/VerifyMatchesTask.cs @@ -2,15 +2,14 @@ namespace Snittlistan.Queue.Messages { - public class VerifyMatchesTask : ITask + public class VerifyMatchesTask : TaskBase { public VerifyMatchesTask(bool force) + : base(new(typeof(VerifyMatchesTask), string.Empty)) { Force = force; } public bool Force { get; } - - public BusinessKey BusinessKey => new(GetType(), string.Empty); } } diff --git a/Snittlistan.Queue/Models/SiteWideConfiguration.cs b/Snittlistan.Queue/Models/SiteWideConfiguration.cs deleted file mode 100644 index 51b80d27..00000000 --- a/Snittlistan.Queue/Models/SiteWideConfiguration.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Snittlistan.Queue.Models -{ - public class SiteWideConfiguration - { - public const string GlobalId = "SiteWideConfig"; - - public SiteWideConfiguration(string databaseUrl, TenantConfiguration[] tenantConfigurations) - { - Id = GlobalId; - DatabaseUrl = databaseUrl; - TenantConfigurations = tenantConfigurations ?? new TenantConfiguration[0]; - } - - public string Id { get; } - - public string DatabaseUrl { get; } - - public TenantConfiguration[] TenantConfigurations { get; } - } -} diff --git a/Snittlistan.Queue/Models/TenantConfiguration.cs b/Snittlistan.Queue/Models/TenantConfiguration.cs deleted file mode 100644 index df80cdb9..00000000 --- a/Snittlistan.Queue/Models/TenantConfiguration.cs +++ /dev/null @@ -1,43 +0,0 @@ -namespace Snittlistan.Queue.Models -{ - using System; - - public class TenantConfiguration - { - public TenantConfiguration( - string hostname, - string databaseName, - string favicon, - string appleTouchIcon, - string appleTouchIconSize, - string webAppTitle, - string fullTeamName, - int tenantId) - { - Hostname = hostname ?? throw new ArgumentNullException(nameof(hostname)); - DatabaseName = databaseName ?? throw new ArgumentNullException(nameof(databaseName)); - Favicon = favicon ?? throw new ArgumentNullException(nameof(favicon)); - AppleTouchIcon = appleTouchIcon ?? throw new ArgumentNullException(nameof(appleTouchIcon)); - AppleTouchIconSize = appleTouchIconSize ?? throw new ArgumentNullException(nameof(appleTouchIconSize)); - WebAppTitle = webAppTitle ?? throw new ArgumentNullException(nameof(webAppTitle)); - FullTeamName = fullTeamName ?? throw new ArgumentNullException(nameof(fullTeamName)); - TenantId = tenantId; - } - - public string Hostname { get; } - - public string DatabaseName { get; } - - public string Favicon { get; } - - public string AppleTouchIcon { get; } - - public string AppleTouchIconSize { get; } - - public string WebAppTitle { get; } - - public string FullTeamName { get; } - - public int TenantId { get; } - } -} diff --git a/Snittlistan.Queue/Snittlistan.Queue.csproj b/Snittlistan.Queue/Snittlistan.Queue.csproj index beed95d4..7c787e6e 100644 --- a/Snittlistan.Queue/Snittlistan.Queue.csproj +++ b/Snittlistan.Queue/Snittlistan.Queue.csproj @@ -43,15 +43,17 @@ + + + + + + - - - - @@ -59,10 +61,9 @@ - - + + - @@ -76,8 +77,6 @@ - - @@ -87,11 +86,9 @@ + - - 6.4.3 - 2.0.0 diff --git a/Snittlistan.Queue/TaskQueueListener.cs b/Snittlistan.Queue/TaskQueueListener.cs index c6228b0b..76abf926 100644 --- a/Snittlistan.Queue/TaskQueueListener.cs +++ b/Snittlistan.Queue/TaskQueueListener.cs @@ -6,7 +6,6 @@ namespace Snittlistan.Queue using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; - using Snittlistan.Queue.Infrastructure; using Snittlistan.Queue.Messages; public class TaskQueueListener : MessageQueueListenerBase @@ -42,18 +41,8 @@ protected override async Task DoHandle(string contents) } TaskRequest request = new(envelope); - - using DatabaseContext context = new(); - Tenant? tenant = context.Tenants.Find(envelope.TenantId); - if (tenant == null) - { - Exception exception = new("tenant not found"); - exception.Data.Add("tenant_id", envelope.TenantId); - throw exception; - } - HttpResponseMessage result = await client.PostAsJsonAsync( - $"{urlScheme}://{tenant.Hostname}:{port}/api/task", + $"{urlScheme}://{envelope.Hostname}:{port}/api/task", request); _ = result.EnsureSuccessStatusCode(); } diff --git a/Snittlistan.Queue/packages.lock.json b/Snittlistan.Queue/packages.lock.json index 6df3be59..2508e31c 100644 --- a/Snittlistan.Queue/packages.lock.json +++ b/Snittlistan.Queue/packages.lock.json @@ -2,16 +2,6 @@ "version": 1, "dependencies": { ".NETFramework,Version=v4.8": { - "EntityFramework6.Npgsql": { - "type": "Direct", - "requested": "[6.4.3, )", - "resolved": "6.4.3", - "contentHash": "iZnc+FlaBaK97zGHR0KS0bnwKQ2gWPpaOoSYNHfjLZ4lr4UEPRFQnh/bpW9Q50ZbNNbDRCs+W12QyVn+sKsSwA==", - "dependencies": { - "EntityFramework": "6.4.0", - "Npgsql": "4.1.3" - } - }, "Lindhart.Analyser.MissingAwaitWarning": { "type": "Direct", "requested": "[2.0.0, )", @@ -48,19 +38,6 @@ "resolved": "4.7.12", "contentHash": "cFe+YQVxghBt4hoB8IH+XVW/vyS6rWJPfWmm0rmgS/iaI3lzzFsGRzjw3VhByovLugw7Zp3kY7nVUWADCu6n2g==" }, - "EntityFramework": { - "type": "Transitive", - "resolved": "6.4.0", - "contentHash": "7jDmcQ3jaN5G7ZJC7Ecq161zQBs/5LqRzBdZ/I4XfmSvOwteGgNjOi30kthFador4Qjo3qUU6iOB1H04GIXrpg==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "K63Y4hORbBcKLWH5wnKgzyn7TOfYzevIEwIedQHBIkmkEBA9SCqgvom+XTuE+fAFGvINGkhFItaZ2dvMGdT5iw==", - "dependencies": { - "System.Threading.Tasks.Extensions": "4.5.2" - } - }, "MicrosoftWebMvc": { "type": "Transitive", "resolved": "2.0.0", @@ -73,79 +50,6 @@ "type": "Transitive", "resolved": "2.0.50217", "contentHash": "90ilYxgj4s82mfgVegs6NujfBw5zbR49SlIWW/vtjRXu6Trdi9W1xh/LlHu6or47IeBI2AhGKsqnfm7HFCBBlA==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "4.1.3", - "contentHash": "sWTXCb6WPPO7WEw4+1XoRqE49EdWmuyMA15LVbzV6jZgRxYWK8TbdniWMjguzmAgOZVYTmrCf+jsqPYoSqACvA==", - "dependencies": { - "System.Memory": "4.5.3", - "System.Runtime.CompilerServices.Unsafe": "4.6.0", - "System.Text.Json": "4.6.0", - "System.Threading.Tasks.Extensions": "4.5.3", - "System.ValueTuple": "4.5.0" - } - }, - "System.Buffers": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==" - }, - "System.Memory": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", - "dependencies": { - "System.Buffers": "4.4.0", - "System.Numerics.Vectors": "4.4.0", - "System.Runtime.CompilerServices.Unsafe": "4.5.2" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "HxozeSlipUK7dAroTYwIcGwKDeOVpQnJlpVaOkBz7CM4TsE5b/tKlQBZecTjh6FzcSbxndYaxxpsBMz+wMJeyw==" - }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "BXgFO8Yi7ao7hVA/nklD0Hre1Bbce048ZqryGZVFifGNPuh+2jqF1i/jLJLMfFGZIzUOw+nCIeH24SQhghDSPw==", - "dependencies": { - "System.Memory": "4.5.3" - } - }, - "System.Text.Json": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "4F8Xe+JIkVoDJ8hDAZ7HqLkjctN/6WItJIzQaifBwClC7wmoLSda/Sv2i6i1kycqDb3hWF4JCVbpAweyOKHEUA==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.0.0", - "System.Buffers": "4.5.0", - "System.Memory": "4.5.3", - "System.Numerics.Vectors": "4.5.0", - "System.Runtime.CompilerServices.Unsafe": "4.6.0", - "System.Text.Encodings.Web": "4.6.0", - "System.Threading.Tasks.Extensions": "4.5.2", - "System.ValueTuple": "4.5.0" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "4.5.2" - } - }, - "System.ValueTuple": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==" } }, ".NETFramework,Version=v4.8/win": {}, diff --git a/Snittlistan.Test/ApiControllers/Task_Post_RegisterMatch.cs b/Snittlistan.Test/ApiControllers/Task_Post_RegisterMatch.cs index 1a885eff..e1ed1d19 100644 --- a/Snittlistan.Test/ApiControllers/Task_Post_RegisterMatch.cs +++ b/Snittlistan.Test/ApiControllers/Task_Post_RegisterMatch.cs @@ -45,7 +45,7 @@ await Transact(session => protected override async Task Act() { // Act - TaskRequest request = new(new MessageEnvelope(new RegisterMatchTask(rosterId!, 123), -1, default, default, default)); + TaskRequest request = new(new MessageEnvelope(new RegisterMatchTask(rosterId!, 123), -1, "", default, default, default)); responseMessage = await Client.PostAsJsonAsync("http://temp.uri/api/task", request); _ = responseMessage.EnsureSuccessStatusCode(); } diff --git a/Snittlistan.Test/ApiControllers/WebApiIntegrationTest.cs b/Snittlistan.Test/ApiControllers/WebApiIntegrationTest.cs index cc901777..c59dd11c 100644 --- a/Snittlistan.Test/ApiControllers/WebApiIntegrationTest.cs +++ b/Snittlistan.Test/ApiControllers/WebApiIntegrationTest.cs @@ -40,21 +40,23 @@ public async Task SetUp() HttpConfiguration configuration = new(); Container = new WindsorContainer(); InMemoryContext inMemoryContext = new(); + Tenant tenant = new("TEST", "favicon", "touchicon", "touchiconsize", "title", 51538, "Hofvet"); _ = Container.Install( new ControllerInstaller(), new ApiControllerInstaller(), new ControllerFactoryInstaller(), - new RavenInstaller(DocumentStoreMode.InMemory), + new RavenInstaller(new[] { tenant }, DocumentStoreMode.InMemory), new TaskHandlerInstaller(), + new CommandHandlerInstaller(), new DatabaseContextInstaller(() => new(inMemoryContext, inMemoryContext), LifestyleType.Scoped), - EventStoreInstaller.FromAssembly(typeof(MvcApplication).Assembly, DocumentStoreMode.InMemory), + EventStoreInstaller.FromAssembly(new[] { tenant }, typeof(MvcApplication).Assembly, DocumentStoreMode.InMemory), new EventStoreSessionInstaller(LifestyleType.Scoped)); _ = Container.Register(Component.For().Instance(Mock.Of())); HttpRequestBase requestMock = Mock.Of(x => x.ServerVariables == new NameValueCollection() { { "SERVER_NAME", "TEST" } }); HttpContextBase httpContextMock = Mock.Of(x => x.Request == requestMock && x.Items == new Dictionary()); - _ = inMemoryContext.Tenants.Add(new("TEST", "favicon", "touchicon", "touchiconsize", "title", 51538)); + _ = inMemoryContext.Tenants.Add(tenant); CurrentHttpContext.Instance = () => httpContextMock; await OnSetUp(Container); diff --git a/Snittlistan.Test/DbTest.cs b/Snittlistan.Test/DbTest.cs index d522a767..21ef86ee 100644 --- a/Snittlistan.Test/DbTest.cs +++ b/Snittlistan.Test/DbTest.cs @@ -2,6 +2,7 @@ namespace Snittlistan.Test { + using System; using System.Web; using System.Web.Mvc; using System.Web.Routing; @@ -10,6 +11,7 @@ namespace Snittlistan.Test using NUnit.Framework; using Raven.Client; using Snittlistan.Web; + using Snittlistan.Web.Infrastructure.Database; using Snittlistan.Web.Infrastructure.Indexes; using Snittlistan.Web.Infrastructure.Installers; using Snittlistan.Web.Models; @@ -22,7 +24,7 @@ public abstract class DbTest public void SetUp() { IWindsorContainer container = new WindsorContainer().Install( - new RavenInstaller(DocumentStoreMode.InMemory)); + new RavenInstaller(Array.Empty(), DocumentStoreMode.InMemory)); Store = container.Resolve(); IndexCreator.CreateIndexes(Store); diff --git a/Snittlistan.Test/RavenInstallerTest.cs b/Snittlistan.Test/RavenInstallerTest.cs index 9f7e1f68..dc8d9988 100644 --- a/Snittlistan.Test/RavenInstallerTest.cs +++ b/Snittlistan.Test/RavenInstallerTest.cs @@ -1,8 +1,10 @@ namespace Snittlistan.Test { + using System; using Castle.Windsor; using NUnit.Framework; using Raven.Client; + using Snittlistan.Web.Infrastructure.Database; using Snittlistan.Web.Infrastructure.Installers; [TestFixture] @@ -12,7 +14,7 @@ public class RavenInstallerTest public RavenInstallerTest() { - container = new WindsorContainer().Install(new RavenInstaller(DocumentStoreMode.InMemory)); + container = new WindsorContainer().Install(new RavenInstaller(Array.Empty(), DocumentStoreMode.InMemory)); } [Test] @@ -23,4 +25,4 @@ public void InstallsDocumentStore() container.Release(store); } } -} \ No newline at end of file +} diff --git a/Snittlistan.Test/packages.lock.json b/Snittlistan.Test/packages.lock.json index 97c6de26..311a099a 100644 --- a/Snittlistan.Test/packages.lock.json +++ b/Snittlistan.Test/packages.lock.json @@ -372,7 +372,6 @@ "snittlistan.queue": { "type": "Project", "dependencies": { - "EntityFramework6.Npgsql": "6.4.3", "Lindhart.Analyser.MissingAwaitWarning": "2.0.0", "Microsoft.AspNet.WebApi.Client": "5.2.7", "MvcContrib": "2.0.95", diff --git a/Snittlistan.Tool/App.config b/Snittlistan.Tool/App.config index 341f8686..b580ae77 100644 --- a/Snittlistan.Tool/App.config +++ b/Snittlistan.Tool/App.config @@ -1,28 +1,10 @@  - -
- - - - - - - - - - - - - - - - diff --git a/Snittlistan.Tool/HttpConnectionSettings.cs b/Snittlistan.Tool/HttpConnectionSettings.cs new file mode 100644 index 00000000..9ee6f8f1 --- /dev/null +++ b/Snittlistan.Tool/HttpConnectionSettings.cs @@ -0,0 +1,17 @@ +#nullable enable + +namespace Snittlistan.Tool +{ + public class HttpConnectionSettings + { + public HttpConnectionSettings(string scheme, int port) + { + UrlScheme = scheme; + Port = port; + } + + public string UrlScheme { get; } + + public int Port { get; } + } +} diff --git a/Snittlistan.Tool/Program.cs b/Snittlistan.Tool/Program.cs index 9cf066eb..55bc6c1f 100644 --- a/Snittlistan.Tool/Program.cs +++ b/Snittlistan.Tool/Program.cs @@ -5,26 +5,23 @@ namespace Snittlistan.Tool using System; using System.Configuration; using System.Linq; + using System.Threading.Tasks; using Castle.MicroKernel.Registration; using Castle.Windsor; using NLog; - using Npgsql.Logging; using Snittlistan.Queue; - using Snittlistan.Queue.Infrastructure; using Snittlistan.Tool.Tasks; public static class Program { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - public static void Main(string[] args) + public static async Task Main(string[] args) { Logger.Info("Starting"); - NpgsqlLogManager.Provider = new NLogLoggingProvider(); - NpgsqlLogManager.IsParameterLoggingEnabled = true; try { - Run(args); + await Run(args); } finally { @@ -32,9 +29,13 @@ public static void Main(string[] args) } } - private static void Run(string[] args) + private static async Task Run(string[] args) { IWindsorContainer container = new WindsorContainer(); + HttpConnectionSettings settings = new( + ConfigurationManager.AppSettings["UrlScheme"], + Convert.ToInt32(ConfigurationManager.AppSettings["Port"])); + _ = container.Register(Component.For().Instance(settings)); _ = container.Register( Classes.FromThisAssembly() .BasedOn() @@ -51,7 +52,7 @@ private static void Run(string[] args) { MsmqGateway.Initialize(ConfigurationManager.AppSettings["TaskQueue"]); ICommandLineTask task = container.Resolve(args[0]); - task.Run(args); + await task.Run(args); } catch (Exception e) { diff --git a/Snittlistan.Tool/Snittlistan.Tool.csproj b/Snittlistan.Tool/Snittlistan.Tool.csproj index 27756249..4867b11c 100644 --- a/Snittlistan.Tool/Snittlistan.Tool.csproj +++ b/Snittlistan.Tool/Snittlistan.Tool.csproj @@ -49,7 +49,8 @@ - + + @@ -85,9 +86,6 @@ 5.1.1 - - 6.4.3 - 2.0.0 @@ -120,6 +118,7 @@ Designer +