using ErrorOr; using Mediator; using Microsoft.EntityFrameworkCore; using Musify.Application.Contracts; using Musify.Application.Shared; using Musify.Application.Users.Responses; namespace Musify.Application.Users { public record GetUserByIdQuery(long Id) : IQuery>; public class GetUserByIdQueryHandler(IDatabase database) : IQueryHandler> { public async ValueTask> Handle(GetUserByIdQuery request, CancellationToken cancellationToken) { var user = await database.Users .AsNoTracking() .Where(u => u.Id == request.Id) .Select(u => UserApplicationResponse.FromEntity(u)) .SingleOrDefaultAsync(cancellationToken); return user == null ? AppErrors.NotFound("User", request.Id) : user; } } }