using LctMonolith.Domain.Entities; using LctMonolith.Infrastructure.Repositories; namespace LctMonolith.Infrastructure.UnitOfWork; /// /// Unit of Work aggregates repositories and transaction boundary. /// public interface IUnitOfWork { IGenericRepository Users { get; } IGenericRepository Ranks { get; } IGenericRepository RankRequiredMissions { get; } IGenericRepository RankRequiredCompetencies { get; } IGenericRepository Missions { get; } IGenericRepository UserMissions { get; } IGenericRepository MissionCompetencyRewards { get; } IGenericRepository MissionArtifactRewards { get; } IGenericRepository Competencies { get; } IGenericRepository UserCompetencies { get; } IGenericRepository Artifacts { get; } IGenericRepository UserArtifacts { get; } IGenericRepository StoreItems { get; } IGenericRepository UserInventoryItems { get; } IGenericRepository Transactions { get; } IGenericRepository EventLogs { get; } IGenericRepository RefreshTokens { get; } IGenericRepository Notifications { get; } Task SaveChangesAsync(CancellationToken ct = default); Task BeginTransactionAsync(CancellationToken ct = default); Task CommitAsync(CancellationToken ct = default); Task RollbackAsync(CancellationToken ct = default); }