using Application.Abstractions.Messaging; using Application.Abstractions.Data; using Microsoft.EntityFrameworkCore; using SharedKernel.Results; namespace Application.Features.Api.Forum.Post.Update; public sealed class Handler(IAppDbContext db) : ICommandHandler { public async Task Handle(Command request, CancellationToken ct) { if (string.IsNullOrWhiteSpace(request.Subject)) { return Result.Failure(Error.Problem("Post.SubjectRequired", "제목을 입력해주세요.")); } var post = await db.Post.FirstOrDefaultAsync(x => x.ID == request.ID, ct); if (post is null) { return Result.Failure(Error.NotFound("Post.NotFound", "게시글을 찾을 수 없습니다.")); } if (post.MemberID != request.MemberID) { return Result.Failure(Error.Forbidden("Post.Forbidden", "수정 권한이 없습니다.")); } post.BoardPrefixID = request.BoardPrefixID; post.Subject = request.Subject.Trim(); post.Content = request.Content ?? string.Empty; post.IsSecret = request.IsSecret; post.UpdatedAt = DateTime.UtcNow; await db.SaveChangesAsync(ct); return Result.Success(); } }