MyBookmark/Modules.Library.Application/Queries/Anime/AnimeTitle/AnimeTitleListQuery.cs
THE_KONDRAT 7b16d72329 ui and login
mongo => postgres
2024-11-03 16:08:39 +03:00

26 lines
1013 B
C#

using MediatR;
using Modules.Library.Application.Gateways;
using Modules.Rating.Api.Querirs;
namespace Modules.Library.Application.Queries.Anime.AnimeTitle;
public class AnimeTitleListQuery : IRequest<List<Models.Anime.Title>>
{
public Guid? UserId { get; set; }
}
public class AnimeTitleListQueryHandler(IAnimeTitleGateway titleGateway, IMediator mediator) : IRequestHandler<AnimeTitleListQuery, List<Models.Anime.Title>>
{
public async Task<List<Models.Anime.Title>> Handle(AnimeTitleListQuery request, CancellationToken cancellationToken)
{
var titles = await titleGateway.GetList();
var rates = await mediator.Send(new ObjectRatingListQuery { ObjectIds = titles.Select(q => q.Id), SubjectId = request.UserId, }, cancellationToken);
rates.ForEach(q =>
{
var title = titles.First(x => x.Id == q.ObjectId);
title.Rate = q.ObjectRatePercentage;
title.MyRate = q.SubjectRatePercentage;
});
return titles;
}
}