Design Prot Merge #1
@@ -10,19 +10,19 @@ namespace Musify.Application.Tracks
|
|||||||
IDatabase database)
|
IDatabase database)
|
||||||
: IQueryHandler<GetListeningHistoryQuery, IEnumerable<TrackApplicationResponse>>
|
: IQueryHandler<GetListeningHistoryQuery, IEnumerable<TrackApplicationResponse>>
|
||||||
{
|
{
|
||||||
|
public const int ListSize = 15;
|
||||||
|
|
||||||
public ValueTask<IEnumerable<TrackApplicationResponse>> Handle(GetListeningHistoryQuery query, CancellationToken cancellationToken)
|
public ValueTask<IEnumerable<TrackApplicationResponse>> Handle(GetListeningHistoryQuery query, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var listeningHistory = database.ListeningHistories
|
var listeningHistory = database.ListeningHistories
|
||||||
.Where(l => l.UserId == query.UserId)
|
.Where(l => l.UserId == query.UserId)
|
||||||
.Select(l => l.TrackId)
|
.OrderByDescending(l => l.ListenedAt)
|
||||||
.ToList();
|
.Select(t => TrackApplicationResponse.FromEntity(t.Track))
|
||||||
|
.Take(ListSize)
|
||||||
var tracks = database.Tracks
|
.DistinctBy(t => t.Id)
|
||||||
.Where(t => listeningHistory.Contains(t.Id))
|
|
||||||
.Select(TrackApplicationResponse.FromEntity)
|
|
||||||
.AsEnumerable();
|
.AsEnumerable();
|
||||||
|
|
||||||
return ValueTask.FromResult(tracks);
|
return ValueTask.FromResult(listeningHistory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user