You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.1 KiB
Go

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
}