-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstore_interface.go
More file actions
40 lines (33 loc) · 1.55 KB
/
store_interface.go
File metadata and controls
40 lines (33 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package gorkflow
import "context"
// WorkflowStore defines the persistence interface for workflows
type WorkflowStore interface {
// Workflow runs
CreateRun(ctx context.Context, run *WorkflowRun) error
GetRun(ctx context.Context, runID string) (*WorkflowRun, error)
UpdateRun(ctx context.Context, run *WorkflowRun) error
UpdateRunStatus(ctx context.Context, runID string, status RunStatus, err *WorkflowError) error
ListRuns(ctx context.Context, filter RunFilter) ([]*WorkflowRun, error)
// Step executions
CreateStepExecution(ctx context.Context, exec *StepExecution) error
GetStepExecution(ctx context.Context, runID, stepID string) (*StepExecution, error)
UpdateStepExecution(ctx context.Context, exec *StepExecution) error
ListStepExecutions(ctx context.Context, runID string) ([]*StepExecution, error)
// Step outputs (for inter-step communication)
SaveStepOutput(ctx context.Context, runID, stepID string, output []byte) error
LoadStepOutput(ctx context.Context, runID, stepID string) ([]byte, error)
// Workflow state
SaveState(ctx context.Context, runID, key string, value []byte) error
LoadState(ctx context.Context, runID, key string) ([]byte, error)
DeleteState(ctx context.Context, runID, key string) error
GetAllState(ctx context.Context, runID string) (map[string][]byte, error)
// Queries
CountRunsByStatus(ctx context.Context, resourceID string, status RunStatus) (int, error)
}
// RunFilter defines filtering criteria for workflow runs
type RunFilter struct {
WorkflowID string
Status *RunStatus
ResourceID string
Limit int
}