using Ardalis.Result; using Mediator; using Microsoft.EntityFrameworkCore; using Musify.Application.Contracts; using Musify.Application.Tracks.Queries; using Musify.Application.Tracks.Responses; namespace Musify.Application.Tracks.Handlers { public class GetTrackByIdQueryHandler(IDatabase database) : IQueryHandler > { public async ValueTask> Handle(GetTrackByIdQuery request, CancellationToken cancellationToken) { var track = await database.Tracks.AsNoTracking() .Select(t => TrackApplicationResponse.FromEntity(t)) .SingleOrDefaultAsync(t => t.Id == request.TrackId, cancellationToken); return track ?? Result.NotFound(); } } }