| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using Application.Abstractions.Data;
- using Application.Abstractions.Messaging;
- using Microsoft.EntityFrameworkCore;
- namespace Application.Features.Forum.BoardMeta.Get;
- public sealed class Handler(IAppDbContext db) : IQueryHandler<Query, Response>
- {
- public async Task<Response> 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);
- }
- }
|