using Application.Abstractions.Data; using Application.Abstractions.Messaging; using Microsoft.EntityFrameworkCore; using SharedKernel.Results; namespace Application.Features.Admin.Store.GameCatalog.GetByGame; internal sealed class Handler(IAppDbContext db) : IQueryHandler> { public async Task> Handle(Query request, CancellationToken ct) { var game = await db.Game .AsNoTracking() .Where(c => c.ID == request.GameID) .Select(c => new { c.ID, c.KorName, c.Code, c.ApiCommissionRate }) .FirstOrDefaultAsync(ct); if (game is null) { return Result.Failure(Error.NotFound("Game.NotFound", "게임을 찾을 수 없습니다.")); } var list = await db.GameProductCatalog .AsNoTracking() .Where(c => c.GameID == request.GameID) .OrderBy(c => c.ProductID) .Select(c => new Response.Row(c.ID, c.ProductID, c.Price, c.IsActive, c.CreatedAt, c.UpdatedAt)) .ToListAsync(ct); return Result.Success(new Response(game.ID, game.KorName, game.Code, game.ApiCommissionRate, list)); } }