-
Notifications
You must be signed in to change notification settings - Fork 2
/
executor_id.go
53 lines (41 loc) · 1.18 KB
/
executor_id.go
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
41
42
43
44
45
46
47
48
49
50
51
52
53
package sdktypes
import (
"go.jetpack.io/typeid"
"go.autokitteh.dev/autokitteh/internal/kittehs"
"go.autokitteh.dev/autokitteh/sdk/sdkerrors"
)
type ExecutorID struct{ id[typeid.AnyPrefix] }
var InvalidExecutorID ExecutorID
type concreteExecutorID interface {
RunID | IntegrationID
ID
}
func NewExecutorID[T concreteExecutorID](in T) ExecutorID {
parsed := kittehs.Must1(ParseID[id[typeid.AnyPrefix]](in.String()))
return ExecutorID{parsed}
}
func ParseExecutorID(s string) (ExecutorID, error) {
if s == "" {
return InvalidExecutorID, nil
}
parsed, err := ParseID[id[typeid.AnyPrefix]](s)
if err != nil {
return InvalidExecutorID, err
}
switch parsed.Kind() {
case runIDKind, integrationIDKind:
return ExecutorID{parsed}, nil
default:
return InvalidExecutorID, sdkerrors.NewInvalidArgumentError("invalid executor id")
}
}
func (e ExecutorID) ToRunID() RunID {
id, _ := ParseRunID(e.String())
return id
}
func (e ExecutorID) ToIntegrationID() IntegrationID {
id, _ := ParseIntegrationID(e.String())
return id
}
func (e ExecutorID) IsRunID() bool { return e.Kind() == runIDKind }
func (e ExecutorID) IsIntegrationID() bool { return e.Kind() == integrationIDKind }