using System.Data.Common; using EntitlementDAL.DTOs; using GB5Shared.DTO.Framework.Login; namespace EntitlementDAL.Interfaces; public interface IProvisioningJobDAL { Task GetByIdAsync(int provisioningJobId, LoginDTO login, CancellationToken ct); Task GetByClientAsync(int clientId, LoginDTO login, CancellationToken ct); Task GetByEngagementRefAsync(string idmsEngagementRef, LoginDTO login, CancellationToken ct); /// Resolves the job currently waiting on a given SqlWorkbench ChangeRequestId — /// used to relay per-script DDL progress notifications to the right ProvisioningHub group. Task GetBySwChangeRequestIdAsync(int swChangeRequestId, LoginDTO login, CancellationToken ct); /// Jobs whose DB-provisioning ChangeRequest has been submitted but not yet /// confirmed Executed — re-checked once per "sqlworkbench.changerequest.executed" /// notification, never a standing poll loop. Task> GetAwaitingDbProvisioningAsync(LoginDTO login, CancellationToken ct); Task SaveAsync(ProvisioningJobDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); /// Records the SqlWorkbench ChangeRequest/ClientDatabase this job is now /// waiting on and advances CURRENTSTEP to 'DB_PROVISIONING_CR_SUBMITTED'. Also used /// mid-chain to record the next package's CR — pendingPackageChainJson is the JSON array /// of PackageIds still to submit afterward (null/empty when this is the last one). Task SetSwLinkageAsync(int provisioningJobId, int swChangeRequestId, int swClientDatabaseId, string? pendingPackageChainJson, string completedStepsJson, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdateProgressAsync(int provisioningJobId, byte jobStatus, string currentStep, string completedStepsJson, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdateCompletedStepsAsync(int provisioningJobId, string completedStepsJson, LoginDTO login, DbTransaction tx, CancellationToken ct); Task MarkCompletedAsync(int provisioningJobId, string currentStep, string completedStepsJson, LoginDTO login, DbTransaction tx, CancellationToken ct); Task MarkFailedAsync(int provisioningJobId, string lastError, LoginDTO login, DbTransaction tx, CancellationToken ct); }