Skip to content

Commit 41dd2ec

Browse files
committed
Use pretty state name strings
Signed-off-by: joshvanl <[email protected]>
1 parent 8c0bbac commit 41dd2ec

File tree

1 file changed

+73
-9
lines changed

1 file changed

+73
-9
lines changed

workflow/state.go

Lines changed: 73 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,78 @@
11
package workflow
22

3-
import "github.com/dapr/durabletask-go/api"
3+
import (
4+
"github.com/dapr/durabletask-go/api"
5+
"github.com/dapr/durabletask-go/api/protos"
6+
)
7+
8+
type Status int
49

510
const (
6-
StatusRunning = api.RUNTIME_STATUS_RUNNING
7-
StatusCompleted = api.RUNTIME_STATUS_COMPLETED
8-
StatusContinuedAsNew = api.RUNTIME_STATUS_CONTINUED_AS_NEW
9-
StatusFailed = api.RUNTIME_STATUS_FAILED
10-
StatusCanceled = api.RUNTIME_STATUS_CANCELED
11-
StatusTerminated = api.RUNTIME_STATUS_TERMINATED
12-
StatusPending = api.RUNTIME_STATUS_PENDING
13-
StatusSuspended = api.RUNTIME_STATUS_SUSPENDED
11+
StatusRunning Status = iota
12+
StatusCompleted
13+
StatusContinuedAsNew
14+
StatusFailed
15+
StatusCanceled
16+
StatusTerminated
17+
StatusPending
18+
StatusSuspended
19+
StatusUnknown
1420
)
21+
22+
// String returns the runtime status as a string.
23+
func (s Status) String() string {
24+
status := [...]string{
25+
"RUNNING",
26+
"COMPLETED",
27+
"CONTINUED_AS_NEW",
28+
"FAILED",
29+
"CANCELED",
30+
"TERMINATED",
31+
"PENDING",
32+
"SUSPENDED",
33+
}
34+
if s > StatusSuspended || s < StatusRunning {
35+
return "UNKNOWN"
36+
}
37+
return status[s]
38+
}
39+
40+
func (s Status) RuntimeStatus() api.OrchestrationStatus {
41+
switch s {
42+
case StatusRunning:
43+
return api.RUNTIME_STATUS_RUNNING
44+
case StatusCompleted:
45+
return api.RUNTIME_STATUS_COMPLETED
46+
case StatusContinuedAsNew:
47+
return api.RUNTIME_STATUS_CONTINUED_AS_NEW
48+
case StatusFailed:
49+
return api.RUNTIME_STATUS_FAILED
50+
case StatusCanceled:
51+
return api.RUNTIME_STATUS_CANCELED
52+
case StatusTerminated:
53+
return api.RUNTIME_STATUS_TERMINATED
54+
case StatusPending:
55+
return api.RUNTIME_STATUS_PENDING
56+
case StatusSuspended:
57+
return api.RUNTIME_STATUS_SUSPENDED
58+
}
59+
return -1
60+
}
61+
62+
type WorkflowState struct {
63+
Metadata protos.OrchestrationMetadata
64+
}
65+
66+
// RuntimeStatus returns the status from a workflow state.
67+
func (wfs *WorkflowState) RuntimeStatus() Status {
68+
s := Status(wfs.Metadata.GetRuntimeStatus().Number())
69+
return s
70+
}
71+
72+
func convertStatusSlice(ss []Status) []api.OrchestrationStatus {
73+
out := []api.OrchestrationStatus{}
74+
for _, s := range ss {
75+
out = append(out, s.RuntimeStatus())
76+
}
77+
return out
78+
}

0 commit comments

Comments
 (0)