Files
photoprism/internal/workers/scheduler.go
Michael Mayer 0e7c91f1b6 Config: Allow scheduling of indexing and backup tasks #2495 #2608 #4243
Note that this is "bleeding edge" functionality and that the newly added
config option PHOTOPRISM_BACKUP_RETAIN can be set, but does not have any
effect yet. Feedback welcome!

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-05-11 19:11:49 +02:00

52 lines
818 B
Go

package workers
import (
"fmt"
"github.com/go-co-op/gocron/v2"
)
var (
Jobs map[string]gocron.Job
Scheduler gocron.Scheduler
)
func init() {
Jobs = make(map[string]gocron.Job)
}
// NewJob adds a new background job to the scheduler, see https://pkg.go.dev/github.com/go-co-op/gocron/v2.
func NewJob(name, schedule string, function func(), parameters ...any) error {
if schedule == "" {
return nil
}
if name == "" {
return fmt.Errorf("new job requires a name")
}
if function == nil {
return fmt.Errorf("new job requires a task to run")
}
job, err := Scheduler.NewJob(
gocron.CronJob(
schedule,
false,
),
gocron.NewTask(
function,
parameters...,
),
gocron.WithSingletonMode(gocron.LimitModeWait),
)
if err != nil {
return err
}
Jobs[name] = job
return nil
}