using System.Collections.Generic; using System.Data.Common; using System.Threading; using System.Threading.Tasks; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.GOP; namespace FrameworkDAL.CustomCode.GOP { public interface IGopFlowDAL { // ── Source Binding ──────────────────────────────────────────────────────── Task GetSourceBindingByCode(int ClientId, string SourceCode, string Environment, LoginDTO LoginDTO); Task GetSourceBindingById(int sourceBindingId, LoginDTO loginDTO, CancellationToken ct = default); Task> GetAllSourceBindings(int ClientId, LoginDTO LoginDTO); Task SaveSourceBinding(GopSourceBindingDTO dto, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct = default); Task UpdateSourceBinding(GopSourceBindingDTO dto, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct = default); Task DeleteSourceBinding(int SourceBindingId, LoginDTO LoginDTO, DbTransaction tx, CancellationToken ct = default); // ── Flow ────────────────────────────────────────────────────────────────── Task GetFlowById(int ClientId, int FlowId, LoginDTO LoginDTO); Task> GetFlowList(LoginDTO loginDTO, CancellationToken ct = default); Task SaveFlow(GopFlowDTO dto, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct = default); Task UpdateFlow(GopFlowDTO dto, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct = default); Task DeleteFlow(int FlowId, LoginDTO LoginDTO, DbTransaction tx, CancellationToken ct = default); // ── Snapshot ────────────────────────────────────────────────────────────── Task GetSnapshotByFlowVersion(int ClientId, int FlowId, string SnapshotVersion, LoginDTO LoginDTO); Task> GetSnapshotsByFlow(int ClientId, int FlowId, LoginDTO LoginDTO); // ── Snapshot Steps ──────────────────────────────────────────────────────── Task> GetSnapshotStepsByVersion(int ClientId, string SnapshotVersion, LoginDTO LoginDTO); /// /// Returns steps for a specific flow + snapshotVersion ordered by SLNO (StepOrder). /// Used by GopExecutionPipeline during execution. /// Task> GetSnapshotSteps(int ClientId, int FlowId, string SnapshotVersion, LoginDTO LoginDTO); /// Immutable edges for a published snapshot version — used by GopExecutionPipeline to branch. Task> GetSnapshotStepEdges(int ClientId, int FlowId, string SnapshotVersion, LoginDTO LoginDTO, CancellationToken ct = default); // ── Flow Step (design-time graph node) ────────────────────────────────────── Task> GetFlowSteps(int FlowId, LoginDTO LoginDTO, CancellationToken ct = default); Task GetFlowStepById(int FlowStepId, LoginDTO LoginDTO, CancellationToken ct = default); Task InsertFlowStep(GopFlowStepDTO dto, LoginDTO LoginDTO, DbTransaction tx, CancellationToken ct = default); Task UpdateFlowStep(GopFlowStepDTO dto, LoginDTO LoginDTO, DbTransaction tx, CancellationToken ct = default); Task DeleteFlowStep(int FlowStepId, LoginDTO LoginDTO, DbTransaction tx, CancellationToken ct = default); // ── Flow Step Edge (design-time DAG edge) ─────────────────────────────────── Task> GetFlowStepEdges(int FlowId, LoginDTO LoginDTO, CancellationToken ct = default); Task GetFlowStepEdgeById(int FlowStepEdgeId, LoginDTO LoginDTO, CancellationToken ct = default); Task InsertFlowStepEdge(GopFlowStepEdgeDTO dto, LoginDTO LoginDTO, DbTransaction tx, CancellationToken ct = default); Task UpdateFlowStepEdge(GopFlowStepEdgeDTO dto, LoginDTO LoginDTO, DbTransaction tx, CancellationToken ct = default); Task DeleteFlowStepEdge(int FlowStepEdgeId, LoginDTO LoginDTO, DbTransaction tx, CancellationToken ct = default); // ── Publish ─────────────────────────────────────────────────────────────── Task InsertSnapshot(GopFlowSnapshotDTO SnapshotDTO, LoginDTO LoginDTO, DbTransaction tx); Task InsertSnapshotStep(GopFlowSnapshotStepDTO StepDTO, LoginDTO LoginDTO, DbTransaction tx); Task InsertSnapshotStepEdge(GopFlowSnapshotStepEdgeDTO EdgeDTO, LoginDTO LoginDTO, DbTransaction tx); Task DeactivateSnapshotsByFlow(int FlowId, LoginDTO LoginDTO, DbTransaction tx); // ── Qualifier Rules (legacy) ────────────────────────────────────────────── Task> GetQualifierRulesByCode(int ClientId, string QualifierCode, LoginDTO LoginDTO); } }