generated from datumforge/go-template
-
Notifications
You must be signed in to change notification settings - Fork 5
/
event_create.go
103 lines (78 loc) · 2.3 KB
/
event_create.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package datumevents
import (
"context"
"encoding/json"
"os"
"github.com/spf13/cobra"
"github.com/spf13/viper"
datum "github.com/datumforge/datum/cmd/cli/cmd"
"github.com/datumforge/datum/pkg/datumclient"
)
var eventCreateCmd = &cobra.Command{
Use: "create",
Short: "Create a new datum event",
RunE: func(cmd *cobra.Command, args []string) error {
return createevent(cmd.Context())
},
}
func init() {
eventCmd.AddCommand(eventCreateCmd)
eventCreateCmd.Flags().StringP("type", "t", "", "type of the event")
datum.ViperBindFlag("event.create.type", eventCreateCmd.Flags().Lookup("type"))
eventCreateCmd.Flags().StringP("metadata", "m", "", "metadata for the event")
datum.ViperBindFlag("event.create.metadata", eventCreateCmd.Flags().Lookup("metadata"))
eventCreateCmd.Flags().StringP("userid", "u", "", "user id associated with the event")
datum.ViperBindFlag("event.create.userid", eventCreateCmd.Flags().Lookup("userid"))
eventCreateCmd.Flags().StringP("eventjson", "j", "", "json payload for the template")
datum.ViperBindFlag("event.create.metadata", eventCreateCmd.Flags().Lookup("eventjson"))
}
func createevent(ctx context.Context) error {
cli, err := datum.GetGraphClient(ctx)
if err != nil {
return err
}
client, _ := cli.Client.(*datumclient.Client)
defer datum.StoreSessionCookies(client)
var s []byte
eventType := viper.GetString("event.create.type")
if eventType == "" {
return datum.NewRequiredFieldMissingError("type")
}
userid := viper.GetStringSlice("event.create.userid")
eventjson := viper.GetString("event.create.eventjson")
metadata := viper.GetString("event.create.metadata")
input := datumclient.CreateEventInput{
EventType: eventType,
}
if userid != nil {
input.UserIDs = userid
}
if eventjson != "" {
var data []byte
if data, err = os.ReadFile(eventjson); err != nil {
return err
}
parsedMessage, err := datum.ParseBytes(data)
if err != nil {
return err
}
input.Metadata = parsedMessage
}
if metadata != "" {
if err := json.Unmarshal([]byte(metadata), &input.Metadata); err != nil {
return err
}
}
if userid != nil {
input.UserIDs = userid
}
u, err := cli.Client.CreateEvent(ctx, input, cli.Interceptor)
if err != nil {
return err
}
s, err = json.Marshal(u)
if err != nil {
return err
}
return datum.JSONPrint(s)
}