using Application.Abstractions.Data; using Application.Abstractions.Messaging; using Microsoft.EntityFrameworkCore; namespace Application.Features.Admin.Stocks.MarketHolidays.GetAll; /// KRX 휴장일 목록 — 연도 필터 + 날짜 오름차순. 수집 배치(KrxBackfill)의 영업일 판정 원본 데이터. internal sealed class Handler(IAppDbContext db) : IQueryHandler { public async Task Handle(Query request, CancellationToken ct) { var years = await db.MarketHoliday.AsNoTracking().Select(c => c.Date.Year).Distinct().OrderByDescending(c => c).ToListAsync(ct); var query = db.MarketHoliday.AsNoTracking(); if (request.Year.HasValue) { query = query.Where(c => c.Date.Year == request.Year.Value); } var list = await query.OrderBy(c => c.Date).Select(c => new Response.Row(c.Date, c.Name)).ToListAsync(ct); return new Response(list.Count, years, list); } }