using TakeoutSaaS.Domain.Tenants.Entities;
namespace TakeoutSaaS.Domain.Tenants.Repositories;
///
/// 公告已读仓储。
///
public interface ITenantAnnouncementReadRepository
{
///
/// 按公告查询已读记录。
///
/// 租户 ID。
/// 公告 ID。
/// 取消标记。
/// 指定公告的已读列表。
Task> GetByAnnouncementAsync(long tenantId, long announcementId, CancellationToken cancellationToken = default);
///
/// 批量按公告查询已读记录,可选按用户过滤。
///
/// 租户 ID。
/// 公告 ID 集合。
/// 用户 ID,空则不按用户筛选。
/// 取消标记。
/// 匹配条件的已读列表。
Task> GetByAnnouncementAsync(long tenantId, IEnumerable announcementIds, long? userId, CancellationToken cancellationToken = default);
///
/// 查询指定用户对某公告的已读记录。
///
/// 租户 ID。
/// 公告 ID。
/// 用户 ID。
/// 取消标记。
/// 已读记录,未读返回 null。
Task FindAsync(long tenantId, long announcementId, long? userId, CancellationToken cancellationToken = default);
///
/// 新增已读记录。
///
/// 已读实体。
/// 取消标记。
/// 异步任务。
Task AddAsync(TenantAnnouncementRead record, CancellationToken cancellationToken = default);
///
/// 保存变更。
///
/// 取消标记。
/// 异步任务。
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}