using System.Data.Common; using EntitlementDAL.DTOs; using GB5Shared.DTO.Framework.Login; namespace EntitlementDAL.Interfaces; public interface IFeatureFlagDAL { Task GetByIdAsync(int featureFlagId, LoginDTO login, CancellationToken ct); Task GetByFeatureIdAsync(int featureId, LoginDTO login, CancellationToken ct); Task GetByFeatureCodeAsync(string featureCode, LoginDTO login, CancellationToken ct); Task> GetListAsync(LoginDTO login, CancellationToken ct); Task SaveAsync(FeatureFlagDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdateAsync(FeatureFlagDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdateFlagStatusAsync(int featureFlagId, byte flagStatus, string? killSwitchReason, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdateRolloutAsync(int featureFlagId, byte rolloutType, byte rolloutPercent, LoginDTO login, DbTransaction tx, CancellationToken ct); Task> GetStaleKillSwitchesAsync(DateTime cutoffDate, LoginDTO login, CancellationToken ct); Task> GetDueScheduledTransitionsAsync(DateTime now, LoginDTO login, CancellationToken ct); Task ClearScheduledOnAsync(int featureFlagId, DateTime modifiedOn, LoginDTO login, DbTransaction tx, CancellationToken ct); Task ClearScheduledOffAsync(int featureFlagId, DateTime modifiedOn, LoginDTO login, DbTransaction tx, CancellationToken ct); // ── MENTITLEMENTFEATUREFLAGTARGET ──────────────────────────────────────── Task> GetTargetsByFlagAsync(int featureFlagId, LoginDTO login, CancellationToken ct); Task GetUserTargetAsync(int featureFlagId, int userId, LoginDTO login, CancellationToken ct); Task GetClientTargetAsync(int featureFlagId, int clientId, LoginDTO login, CancellationToken ct); Task GetTargetByIdAsync(int flagTargetId, LoginDTO login, CancellationToken ct); Task SaveTargetAsync(FeatureFlagTargetDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdateTargetAsync(FeatureFlagTargetDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task DeleteTargetAsync(int flagTargetId, LoginDTO login, DbTransaction tx, CancellationToken ct); }