Files
yes.blog/Yes.Application/Admins/Articles/GetLatestArticlesQueryHandler.cs
2025-05-13 11:27:58 +08:00

33 lines
1.2 KiB
C#

namespace Yes.Application.Admins.Articles
{
public record GetLatestArticlesQuery() : IRequest<List<GetLatestArticlesQueryResponse>>;
public record GetLatestArticlesQueryResponse(
int Id,
string Title,
DateTime CreateDate,
bool IsDraft
);
public class GetLatestArticlesQueryHandler(BlogDbContext db) : IRequestHandler<GetLatestArticlesQuery, List<GetLatestArticlesQueryResponse>>
{
private readonly BlogDbContext _db = db;
public async Task<List<GetLatestArticlesQueryResponse>> Handle(GetLatestArticlesQuery request, CancellationToken cancellationToken)
{
var query = _db.Articles.AsNoTracking().Where(x=>x.Type==ArticleTypeEnum.Article && x.Status != ArticleStatusEnum.Deleted).OrderByDescending(x => x.Id).Select(article =>
new GetLatestArticlesQueryResponse(
article.Id,
article.Title,
article.CreateDate,
article.Status == ArticleStatusEnum.Draft
)
).Take(10);
var articles = await query.ToListAsync(cancellationToken);
return articles;
}
}
}