using Svrnty.CQRS.Abstractions; using Svrnty.CQRS.Abstractions.Attributes; namespace Svrnty.CQRS.Tests; // Commands public class CreatePersonCommand { public string FirstName { get; set; } = string.Empty; public string LastName { get; set; } = string.Empty; } public class DeletePersonCommand { public int Id { get; set; } } [CommandName("customCreate")] public class CreateWidgetCommand { public string Name { get; set; } = string.Empty; } // Command results public class CreatePersonResult { public int Id { get; set; } } // Queries public class PersonQuery { public string? NameFilter { get; set; } } [QueryName("customPersonLookup")] public class PersonLookupQuery { public int Id { get; set; } } // Handlers public class CreatePersonCommandHandler : ICommandHandler { public Task HandleAsync(CreatePersonCommand command, CancellationToken cancellationToken = default) { return Task.FromResult(new CreatePersonResult { Id = 1 }); } } public class DeletePersonCommandHandler : ICommandHandler { public Task HandleAsync(DeletePersonCommand command, CancellationToken cancellationToken = default) { return Task.CompletedTask; } } public class CreateWidgetCommandHandler : ICommandHandler { public Task HandleAsync(CreateWidgetCommand command, CancellationToken cancellationToken = default) { return Task.CompletedTask; } } public class PersonQueryHandler : IQueryHandler> { public Task> HandleAsync(PersonQuery query, CancellationToken cancellationToken = default) { return Task.FromResult>(["Alice", "Bob"]); } } public class PersonLookupQueryHandler : IQueryHandler { public Task HandleAsync(PersonLookupQuery query, CancellationToken cancellationToken = default) { return Task.FromResult("Alice"); } }