diff --git a/cloudflare/cron/cron.go b/cloudflare/cron/cron.go index 6470195..a3cd47b 100644 --- a/cloudflare/cron/cron.go +++ b/cloudflare/cron/cron.go @@ -11,45 +11,43 @@ import ( "github.com/syumai/workers/internal/runtimecontext" ) -// CronEvent represents information about the Cron that invoked this worker. -type CronEvent struct { - // Type string +// Event represents information about the Cron that invoked this worker. +type Event struct { Cron string ScheduledTime time.Time } -// toGo converts JS Object to CronEvent -func (ce *CronEvent) toGo(obj js.Value) error { +// toEvent converts JS Object to Go Event struct +func toEvent(obj js.Value) (*Event, error) { if obj.IsUndefined() { - return errors.New("event is null") + return nil, errors.New("event is null") } cronVal := obj.Get("cron").String() - ce.Cron = cronVal scheduledTimeVal := obj.Get("scheduledTime").Float() - ce.ScheduledTime = time.Unix(int64(scheduledTimeVal)/1000, 0).UTC() - - return nil + return &Event{ + Cron: cronVal, + ScheduledTime: time.Unix(int64(scheduledTimeVal)/1000, 0).UTC(), + }, nil } -type CronFunc func(ctx context.Context, event CronEvent) error +type Task func(ctx context.Context, event *Event) error -var cronTask CronFunc +var scheduledTask Task -// ScheduleTask sets the CronFunc to be executed -func ScheduleTask(task CronFunc) { - cronTask = task +// ScheduleTask sets the Task to be executed +func ScheduleTask(task Task) { + scheduledTask = task jsutil.Global.Call("ready") select {} } func runScheduler(eventObj js.Value, runtimeCtxObj js.Value) error { ctx := runtimecontext.New(context.Background(), runtimeCtxObj) - event := CronEvent{} - err := event.toGo(eventObj) + event, err := toEvent(eventObj) if err != nil { return err } - err = cronTask(ctx, event) + err = scheduledTask(ctx, event) if err != nil { return err } diff --git a/examples/cron/main.go b/examples/cron/main.go index acb5f27..1931619 100644 --- a/examples/cron/main.go +++ b/examples/cron/main.go @@ -9,7 +9,7 @@ import ( "github.com/syumai/workers/cloudflare/cron" ) -func task(ctx context.Context, event cron.CronEvent) error { +func task(ctx context.Context, event cron.Event) error { fmt.Println(cloudflare.Getenv(ctx, "HELLO")) if event.ScheduledTime.Minute()%2 == 0 {