21 lines
650 B
C#
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);
|
|
}
|
|
}
|