using Dpz.Core.Service.Mediator.Features.Sitemap.Contracts;

namespace Dpz.Core.Service.Mediator.Features.Sitemap.Queries;

/// <summary>
/// 处理站点地图碎碎念数据请求
/// </summary>
public class SitemapMumbleDataHandler(IRepository<Public.Entity.Mumble> repository)
    : IRequestHandler<SitemapMumbleDataRequest, SitemapMumbleDataResponse>
{
    /// <summary>
    /// 执行站点地图碎碎念数据查询
    /// </summary>
    public async ValueTask<SitemapMumbleDataResponse> Handle(
        SitemapMumbleDataRequest request,
        CancellationToken cancellationToken
    )
    {
        var source = await repository
            .MongodbQueryable.OrderByDescending(x => x.CreateTime)
            .Select(x => new { x.Id, x.CreateTime })
            .ToListAsync(cancellationToken);

        var mumbles = source
            .Select(x => new SitemapMumbleItem { Id = x.Id.ToString(), CreateTime = x.CreateTime })
            .ToList();

        return new SitemapMumbleDataResponse { Mumbles = mumbles, TotalCount = mumbles.Count };
    }
}
评论加载中...