mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-07-16 17:47:22 +00:00
Same pattern as the Breweries migration: Service.UserManagement and the UserAccount repository fold into Features.UserManagement, with MediatR queries replacing UserService. UpdateUserCommand/Handler carry forward IUserService.UpdateAsync as-is (it has no HTTP route today, and adding one is a separate decision from this migration). Adds handler/repository test coverage that didn't exist before, since Service.UserManagement had no test project.
24 lines
919 B
C#
24 lines
919 B
C#
using Domain.Entities;
|
|
using Domain.Exceptions;
|
|
using Features.UserManagement.Repository;
|
|
using MediatR;
|
|
|
|
namespace Features.UserManagement.Queries.GetUserById;
|
|
|
|
/// <summary>
|
|
/// Handles <see cref="GetUserByIdQuery"/> by looking up the matching user account.
|
|
/// </summary>
|
|
/// <param name="repository">Repository used to query user account data.</param>
|
|
public class GetUserByIdHandler(IUserAccountRepository repository)
|
|
: IRequestHandler<GetUserByIdQuery, UserAccount>
|
|
{
|
|
/// <exception cref="NotFoundException">Thrown when no user account exists with the given ID.</exception>
|
|
public async Task<UserAccount> Handle(GetUserByIdQuery request, CancellationToken cancellationToken)
|
|
{
|
|
var user = await repository.GetByIdAsync(request.UserAccountId);
|
|
if (user is null)
|
|
throw new NotFoundException($"User with ID {request.UserAccountId} not found");
|
|
return user;
|
|
}
|
|
}
|