Handler.cs 833 B

1234567891011121314151617181920212223242526
  1. using Application.Abstractions.Messaging;
  2. using Application.Abstractions.Data;
  3. using SharedKernel.Results;
  4. using Microsoft.EntityFrameworkCore;
  5. namespace Application.Features.Admin.NavMenu.Get;
  6. public sealed class Handler(IAppDbContext db) : IQueryHandler<Query, Result<Response>>
  7. {
  8. public async Task<Result<Response>> Handle(Query request, CancellationToken ct)
  9. {
  10. var item = await db.NavMenuItem.AsNoTracking().FirstOrDefaultAsync(c => c.ID == request.ID, ct);
  11. if (item is null)
  12. {
  13. return Result.Failure<Response>(Error.NotFound("NavMenu.NotFound", "메뉴를 찾을 수 없습니다."));
  14. }
  15. return Result.Success(new Response(
  16. item.ID,
  17. item.Label,
  18. item.Href,
  19. item.SortOrder,
  20. item.IsVisible
  21. ));
  22. }
  23. }