using ErrorOr; using Mediator; using Microsoft.EntityFrameworkCore; using Musify.Application.Contracts; 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); if (user == null) return Error.NotFound(); return user; } } }