build-flow.api/src/modules/im/Application/Chat/Handlers/GetUserConversationIdsQueryHandler.cs

21 lines
650 B
C#

using IM.Application.Chat.Queries;
using IM.Infrastructure.Persistence;
using MediatR;
namespace IM.Application.Chat.Handlers;
/// <summary>
/// 用户会话 ID 查询处理器。供 SignalR 按会话分组订阅。
/// </summary>
public class GetUserConversationIdsQueryHandler(ImDbContext db)
: IRequestHandler<GetUserConversationIdsQuery, List<Guid>>
{
public async Task<List<Guid>> Handle(GetUserConversationIdsQuery request, CancellationToken ct)
{
return await db.ConversationParticipants
.Where(p => p.UserId == request.UserId)
.Select(p => p.ConversationId)
.ToListAsync(ct);
}
}