mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-03-22 22:00:08 +00:00
26 lines
859 B
Go
26 lines
859 B
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
backoff "github.com/cenkalti/backoff/v5"
|
|
"github.com/go-co-op/gocron/v2"
|
|
)
|
|
|
|
// RegisterJobOpts holds optional configuration for registering a scheduled job.
|
|
type RegisterJobOpts struct {
|
|
// RunImmediately runs the job immediately after registration.
|
|
RunImmediately bool
|
|
// ExtraOptions are additional gocron job options.
|
|
ExtraOptions []gocron.JobOption
|
|
// BackOff is an optional backoff strategy. If non-nil, the job will be wrapped
|
|
// with automatic retry logic using the provided backoff on transient failures.
|
|
BackOff backoff.BackOff
|
|
}
|
|
|
|
// Scheduler is an interface for registering and managing background jobs.
|
|
type Scheduler interface {
|
|
RegisterJob(ctx context.Context, name string, def gocron.JobDefinition, job func(ctx context.Context) error, opts RegisterJobOpts) error
|
|
RemoveJob(name string) error
|
|
}
|