namespace Fengling.Activity.Domain.Repositories; using Fengling.Activity.Domain.Aggregates.Campaigns; using Fengling.Activity.Domain.Aggregates.ParticipationRecords; using Fengling.Activity.Domain.Enums; using Fengling.Activity.Domain.ValueObjects; public interface IParticipationRecordRepository { Task GetByIdAsync(ParticipationRecordId id, CancellationToken cancellationToken = default); Task> GetByCampaignIdAsync(CampaignId campaignId, CancellationToken cancellationToken = default); Task> GetByMemberIdAsync(TenantId tenantId, Guid memberId, CancellationToken cancellationToken = default); Task GetByCampaignAndMemberAsync(CampaignId campaignId, Guid memberId, CancellationToken cancellationToken = default); Task> GetByStatusAsync(CampaignId campaignId, ParticipationStatus status, CancellationToken cancellationToken = default); Task GetParticipationCountAsync(CampaignId campaignId, Guid memberId, CancellationToken cancellationToken = default); Task AddAsync(ParticipationRecord record, CancellationToken cancellationToken = default); Task UpdateAsync(ParticipationRecord record, CancellationToken cancellationToken = default); Task DeleteAsync(ParticipationRecord record, CancellationToken cancellationToken = default); }