Files
TeleWave/backend/src/TeleWave.Application/Programming/Groups/ListGroups/ListGroupsQueryHandler.cs
T

33 lines
1.1 KiB
C#

using LiteCqrs;
using Microsoft.EntityFrameworkCore;
using TeleWave.Application.Common.Interfaces;
namespace TeleWave.Application.Programming.Groups.ListGroups;
public sealed class ListGroupsQueryHandler(IAppDbContext dbContext)
: IQueryHandler<ListGroupsQuery, IReadOnlyList<GroupSummaryDto>>
{
public async Task<IReadOnlyList<GroupSummaryDto>> 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);
}
}