using LiteCqrs; using Microsoft.EntityFrameworkCore; using TeleWave.Application.Common.Interfaces; namespace TeleWave.Application.Programming.Groups.ListGroups; public sealed class ListGroupsQueryHandler(IAppDbContext dbContext) : IQueryHandler> { public async Task> Handle( ListGroupsQuery query, CancellationToken cancellationToken ) { // Список читает кэш статистики, не пересчитывая его: пересчёт идёт при правке состава. return await dbContext .Groups.AsNoTracking() .OrderBy(g => g.Name) .Select(g => new GroupSummaryDto( g.Id, g.Name, g.Description, g.ItemCount, g.UnitCount, g.TotalDuration.TotalSeconds, g.FilterJson != null, g.StatsComputedAt, g.CreatedAt )) .ToListAsync(cancellationToken); } }