using MediatR;
using BuildFlow.Application.Roles.DTOs;
using BuildFlow.Infrastructure.Persistence;
using BuildFlow.Application.Roles.Queries;
namespace BuildFlow.Application.Roles.Handlers;
///
/// Get角色List查询处理器。执行业务校验后持久化。
///
public class GetRoleListQueryHandler(RagDbContext db) : IRequestHandler>
{
public async Task> Handle(GetRoleListQuery request, CancellationToken ct)
{
return await db.Roles
.Include(r => r.RolePermissions).ThenInclude(rp => rp.Permission)
.Select(r => new RoleDto(
r.Id, r.Name, r.Description, r.CreatedAt,
r.RolePermissions.Select(rp => rp.Permission.Code).ToList()))
.ToListAsync(ct);
}
}