Working on a command dispatcher

This commit is contained in:
Janus Knudsen 2025-03-10 18:10:00 +01:00
parent 31666b4ba0
commit a86a2d7ade
5 changed files with 55 additions and 4 deletions

View file

@ -0,0 +1,13 @@
using Autofac;
using PlanTempus.Components.Users.Create;
namespace PlanTempus.Components;
public class CommandHandler(IComponentContext context) : ICommandHandler
{
public Task<TCommandResult> Handle<TCommand, TCommandResult>(TCommand command)
{
var handler = context.Resolve<ICommandHandler<TCommand, TCommandResult>>();
return handler.Handle(command);
}
}

View file

@ -16,7 +16,7 @@ namespace PlanTempus.Components.ModuleRegistry
// Registrer en decorator for alle ICommandHandler<TCommand>
builder.RegisterGenericDecorator(
typeof(LoggingCommandHandlerDecorator<>), // Din decorator-klasse
typeof(CreateUserHandlerDecorator<>), // Din decorator-klasse
typeof(ICommandHandler<>)); // Interface, der skal dekoreres
}

View file

@ -7,8 +7,8 @@ namespace PlanTempus.Components.Users.Create
public class CreateUserCommand : ICommand
{
public string Email { get; set; }
public string Password { get; set; }
public required string Email { get; set; }
public required string Password { get; set; }
public bool IsActive { get; set; } = true;
public required Guid CorrelationId { get; set; }
}

View file

@ -8,7 +8,12 @@ using PlanTempus.Core.Telemetry;
namespace PlanTempus.Components.Users.Create
{
public interface ICommandHandler<T, TResult>
public interface ICommandHandler
{
Task<TCommandResult> Handle<TCommand, TCommandResult>(TCommand command );
}
public interface ICommandHandler<in T, TResult>
{
Task<TResult> Handle(T input);
}