Handler.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using SharedKernel.Results;
  2. using Application.Abstractions.Data;
  3. using MediatR;
  4. using Microsoft.EntityFrameworkCore;
  5. namespace Application.Features.Api.Auth.GetProfile;
  6. internal sealed class Handler(IAppDbContext db) : IRequestHandler<Query, Result<Response>>
  7. {
  8. public async Task<Result<Response>> Handle(Query request, CancellationToken ct)
  9. {
  10. var member = await db.Member
  11. .AsNoTracking()
  12. .Include(m => m.MemberGrade)
  13. .Where(m => m.ID == request.MemberID)
  14. .Select(m => new Response(
  15. m.ID,
  16. m.SID,
  17. m.Email,
  18. m.Name,
  19. m.Thumb,
  20. m.Summary,
  21. m.MemberGrade != null ? m.MemberGrade.KorName : null,
  22. m.IsEmailVerified,
  23. m.IsCreator,
  24. m.CreatedAt))
  25. .FirstOrDefaultAsync(ct);
  26. if (member is null)
  27. {
  28. return Result.Failure<Response>(Error.NotFound("Auth.MemberNotFound", "회원 정보를 찾을 수 없습니다."));
  29. }
  30. return Result.Success(member);
  31. }
  32. }