package commands import ( "context" "log" "time" "git.cheetah.cat/archivinator-ng/workerclient/common" grabber "git.cheetah.cat/archivinator-ng/workerclient/downloader" "go.temporal.io/api/enums/v1" "go.temporal.io/sdk/client" ) type KickstartCommand struct { //Token string `long:"token" description:"authenticate with this token"` } func (command *KickstartCommand) Execute(args []string) error { ctx := context.Background() c, err := client.Dial(client.Options{ HostPort: common.WorkerSettings.TemporalHost, Namespace: common.WorkerSettings.TemporalNS, }) if err != nil { log.Fatalln("Unable to create client", err) } defer c.Close() // @@@SNIPSTART samples-go-schedule-create-delete // This schedule ID can be user business logic identifier as well. scheduleID := "schedule_periodic_fetch" workflowID := "RequestProcessingWorkflow" // Create the schedule, start with no spec so the schedule will not run. scheduleHandle, err := c.ScheduleClient().Create(ctx, client.ScheduleOptions{ ID: scheduleID, Spec: client.ScheduleSpec{ Intervals: []client.ScheduleIntervalSpec{ { Every: 1 * time.Minute, }, }, }, Action: &client.ScheduleWorkflowAction{ ID: workflowID, Workflow: grabber.RequestProcessingWorkflow, TaskQueue: "request-grabber", }, Overlap: enums.SCHEDULE_OVERLAP_POLICY_SKIP, }) if err != nil { log.Fatalln("Unable to create schedule", err) } log.Println("Created Schedule", scheduleHandle.GetID()) /* // Delete the schedule once the sample is done defer func() { log.Println("Deleting schedule", "ScheduleID", scheduleHandle.GetID()) err = scheduleHandle.Delete(ctx) if err != nil { log.Fatalln("Unable to delete schedule", err) } }() */ // @@@SNIPEND /* // @@@SNIPSTART samples-go-schedule-trigger // Manually trigger the schedule once log.Println("Manually triggering schedule", "ScheduleID", scheduleHandle.GetID()) err = scheduleHandle.Trigger(ctx, client.ScheduleTriggerOptions{ Overlap: enums.SCHEDULE_OVERLAP_POLICY_SKIP, }) if err != nil { log.Fatalln("Unable to trigger schedule", err) } // @@@SNIPEND */ return nil }