using Collaboration.Domain.Entities; using Collaboration.Domain.Enums; namespace Collaboration.Application.Interfaces; public interface ICollabSessionRepository { Task GetByIdAsync(Guid sessionId, CancellationToken ct = default); Task GetByCodeAsync(string sessionCode, CancellationToken ct = default); Task GetWithParticipantsAsync(Guid sessionId, CancellationToken ct = default); Task GetFullAsync(Guid sessionId, CancellationToken ct = default); // Includes participants + invites Task> GetActiveByUserAsync(Guid userId, Guid orgId, CancellationToken ct = default); Task> GetScheduledByUserAsync(Guid userId, Guid orgId, CancellationToken ct = default); Task> GetAbandonedCandidatesAsync(int timeoutMinutes, CancellationToken ct = default); Task AddAsync(CollabSession session, CancellationToken ct = default); Task SaveChangesAsync(CancellationToken ct = default); } public interface ICollabParticipantRepository { Task GetByIdAsync(Guid participantId, CancellationToken ct = default); Task GetByConnectionIdAsync(string connectionId, CancellationToken ct = default); Task GetActiveByUserAndSessionAsync(Guid userId, Guid sessionId, CancellationToken ct = default); Task> GetActiveBySessionAsync(Guid sessionId, CancellationToken ct = default); Task GetCurrentControlHolderAsync(Guid sessionId, CancellationToken ct = default); Task SaveChangesAsync(CancellationToken ct = default); } public interface ICollabInviteRepository { Task GetByTokenAsync(string token, CancellationToken ct = default); Task GetByIdAsync(Guid inviteId, CancellationToken ct = default); Task> GetPendingByUserAsync(Guid userId, CancellationToken ct = default); Task AddAsync(CollabSessionInvite invite, CancellationToken ct = default); Task SaveChangesAsync(CancellationToken ct = default); } public interface ICollabConfigRepository { Task GetByOrgAsync(Guid orgId, CancellationToken ct = default); Task GetOrCreateDefaultAsync(Guid orgId, CancellationToken ct = default); Task AddAsync(CollabConfig config, CancellationToken ct = default); Task SaveChangesAsync(CancellationToken ct = default); }