using Application.Abstractions.Data; using Application.Abstractions.Messaging; using Microsoft.EntityFrameworkCore; namespace Application.Features.Forum.BoardMeta.Get; public sealed class Handler(IAppDbContext db) : IQueryHandler { public async Task Handle(Query request, CancellationToken ct) { var board = await db.Board .AsNoTracking() .FirstOrDefaultAsync(x => x.ID == request.BoardID, ct) ?? throw new KeyNotFoundException("게시판을 찾을 수 없습니다."); var meta = await db.BoardMeta .FirstOrDefaultAsync(x => x.BoardID == request.BoardID, ct); if (meta is null) { meta = new Domain.Entities.Forum.Boards.BoardMeta { BoardID = request.BoardID }; db.BoardMeta.Add(meta); await db.SaveChangesAsync(ct); } return new Response( meta.ID, meta.BoardID, board.Code, board.Name, meta.List, meta.View, meta.Write, meta.Comment, meta.General, meta.Permission, meta.Notify, meta.NotifyTemplate, meta.Exp); } }