-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathmain.go
77 lines (70 loc) · 2.66 KB
/
main.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package main
import (
"log"
"os"
"strings"
"time"
searchattributesv1 "github.com/cludden/protoc-gen-go-temporal/gen/example/searchattributes/v1"
"github.com/urfave/cli/v2"
"go.temporal.io/sdk/client"
"go.temporal.io/sdk/converter"
tlog "go.temporal.io/sdk/log"
"go.temporal.io/sdk/worker"
"go.temporal.io/sdk/workflow"
)
type SearchAttributesWorkflow struct {
*searchattributesv1.SearchAttributesWorkflowInput
log tlog.Logger
}
func NewSearchAttributesWorkflow(ctx workflow.Context, input *searchattributesv1.SearchAttributesWorkflowInput) (searchattributesv1.SearchAttributesWorkflow, error) {
return &SearchAttributesWorkflow{input, workflow.GetLogger(ctx)}, nil
}
func (w *SearchAttributesWorkflow) Execute(ctx workflow.Context) (err error) {
sa := workflow.GetInfo(ctx).SearchAttributes
for _, attr := range strings.Split("CustomBoolField,CustomDatetimeField,CustomDoubleField,CustomIntField,CustomKeywordField,CustomTextField", ",") {
if p, ok := sa.IndexedFields[attr]; ok {
switch attr {
case "CustomBoolField":
var result bool
err = converter.GetDefaultDataConverter().FromPayload(p, &result)
w.log.Info("search attribute", "name", attr, "value", result, "error", err)
case "CustomDatetimeField":
var result time.Time
err = converter.GetDefaultDataConverter().FromPayload(p, &result)
w.log.Info("search attribute", "name", attr, "value", result, "error", err)
case "CustomDoubleField":
var result float64
err = converter.GetDefaultDataConverter().FromPayload(p, &result)
w.log.Info("search attribute", "name", attr, "value", result, "error", err)
case "CustomIntField":
var result int
err = converter.GetDefaultDataConverter().FromPayload(p, &result)
w.log.Info("search attribute", "name", attr, "value", result, "error", err)
case "CustomKeywordField":
var result string
err = converter.GetDefaultDataConverter().FromPayload(p, &result)
w.log.Info("search attribute", "name", attr, "value", result, "error", err)
case "CustomTextField":
var result string
err = converter.GetDefaultDataConverter().FromPayload(p, &result)
w.log.Info("search attribute", "name", attr, "value", result, "error", err)
}
}
}
return nil
}
func main() {
app, err := searchattributesv1.NewExampleCli(
searchattributesv1.NewExampleCliOptions().WithWorker(func(cmd *cli.Context, c client.Client) (worker.Worker, error) {
w := worker.New(c, searchattributesv1.ExampleTaskQueue, worker.Options{})
searchattributesv1.RegisterSearchAttributesWorkflow(w, NewSearchAttributesWorkflow)
return w, nil
}),
)
if err != nil {
log.Fatal(err)
}
if err := app.Run(os.Args); err != nil {
log.Fatal(err)
}
}