pkg

package
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 7, 2024 License: Apache-2.0 Imports: 11 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ISONanoString

func ISONanoString(theTime time.Time) string

func StringPointer

func StringPointer(theString string) *string

func TimeToString

func TimeToString(theTime time.Time) string

Types

type CronTrigger

type CronTrigger struct {
	Expression string `json:"expression"`
	// contains filtered or unexported fields
}

func NewCronTrigger

func NewCronTrigger(cronExpression string) (*CronTrigger, error)

func (CronTrigger) GetFireTime

func (t CronTrigger) GetFireTime(from time.Time) *time.Time

func (CronTrigger) IsRecurring

func (t CronTrigger) IsRecurring() bool

type ExecuteOnceTrigger

type ExecuteOnceTrigger struct {
	FireAt time.Time `json:"fire_at"`
}

func NewExecuteOnceTrigger

func NewExecuteOnceTrigger(fireAt time.Time) *ExecuteOnceTrigger

func (ExecuteOnceTrigger) GetFireTime

func (t ExecuteOnceTrigger) GetFireTime(from time.Time) *time.Time

func (ExecuteOnceTrigger) IsRecurring

func (t ExecuteOnceTrigger) IsRecurring() bool

type Scheduler

type Scheduler struct {
	ScheduleWindow *time.Duration
	RunnerWindow   *time.Duration
	CleanupWindow  *time.Duration
	Handler        func(taskInstance TaskInstance) error
	// contains filtered or unexported fields
}

func NewScheduler

func NewScheduler(scheduleWindow, runnerWindow, cleanupWindow time.Duration, handler func(taskInstance TaskInstance) error, store StoreInterface) (*Scheduler, error)

func (*Scheduler) DeleteTaskDefinition

func (s *Scheduler) DeleteTaskDefinition(id *uuid.UUID) error

func (*Scheduler) DeleteTaskDefinitions

func (s *Scheduler) DeleteTaskDefinitions(ids []*uuid.UUID) error

func (*Scheduler) DeleteTaskDefinitionsByMetadataQuery

func (s *Scheduler) DeleteTaskDefinitionsByMetadataQuery(metadataQuery interface{}) error

func (*Scheduler) GetTaskDefinitions

func (s *Scheduler) GetTaskDefinitions(ids []*uuid.UUID) ([]TaskDefinition, error)

func (*Scheduler) ListTaskDefinitions

func (s *Scheduler) ListTaskDefinitions(skip, limit int, metadataQuery interface{}) ([]TaskDefinition, error)

func (*Scheduler) Run

func (s *Scheduler) Run()

func (*Scheduler) Stop

func (s *Scheduler) Stop()

func (*Scheduler) UpsertTaskDefinition

func (s *Scheduler) UpsertTaskDefinition(task TaskDefinition) error

type StoreInterface

type StoreInterface interface {
	Initialize() error
	UpsertTaskDefinition(definition TaskDefinition) error
	ListTaskDefinitions(offset, limit int, metadataQuery interface{}) ([]TaskDefinition, error)
	GetTaskDefinition(id *uuid.UUID) (TaskDefinition, error)
	GetTaskDefinitions(ids []*uuid.UUID) ([]TaskDefinition, error)
	DeleteTaskDefinition(id *uuid.UUID) error
	DeleteTaskDefinitions(ids []*uuid.UUID) error
	DeleteTaskDefinitionsByMetadata(metadataQuery interface{}) error
	UpsertTaskInstance(taskInstance TaskInstance) error
	GetTaskInstance(id *uuid.UUID) (TaskInstance, error)
	ListTaskInstances(offset, limit int) ([]TaskInstance, error)
	DeleteTaskInstance(id *uuid.UUID) error
	GetTaskDefinitionsToSchedule(limit time.Time) ([]TaskDefinition, error)
	GetTaskInstancesToRun(limit time.Time) ([]TaskInstance, error)
	// markTaskInstanceComplete() should also mark the task definition complete, if the definition is non-recurring
	MarkTaskInstanceComplete(instance TaskInstance) error
	DeleteCompletedTaskInstances() error
	DeleteCompletedTaskDefinitions() error
}

type TaskDefinition

type TaskDefinition struct {
	Id                 *uuid.UUID
	Metadata           interface{}         `json:"metadata"`
	ExpireAfter        time.Duration       `json:"expire_after"`
	NextFireTime       *time.Time          `json:"next_fire_time"`
	ExecuteOnceTrigger *ExecuteOnceTrigger `json:"execute_once_trigger"`
	CronTrigger        *CronTrigger        `json:"cron_trigger"`
	CompletedAt        *time.Time          `json:"completed_at"`
	Recurring          bool                `json:"recurring"`
	TaskInstances      []TaskInstance      `json:"task_instances" gorm:"foreignKey:Id"`
}

func TaskFromBytes

func TaskFromBytes(bytes []byte) (TaskDefinition, error)

func (TaskDefinition) AsBytes

func (t TaskDefinition) AsBytes() ([]byte, error)

func (TaskDefinition) GetFireTimeFrom

func (t TaskDefinition) GetFireTimeFrom(from time.Time) *time.Time

func (TaskDefinition) GetIdBytes

func (t TaskDefinition) GetIdBytes() []byte

func (TaskDefinition) GetNextFireTime

func (t TaskDefinition) GetNextFireTime() *time.Time

func (TaskDefinition) GetTrigger

func (t TaskDefinition) GetTrigger() TriggerInterface

func (TaskDefinition) IdString

func (t TaskDefinition) IdString() string

type TaskInstance

type TaskInstance struct {
	Id             *uuid.UUID     `json:"id"`
	ExpiresAt      *time.Time     `json:"expires_at"`
	ExecuteAt      *time.Time     `json:"execute_at"`
	StartedAt      *time.Time     `json:"started_at"`
	CompletedAt    *time.Time     `json:"completed_at"`
	TaskDefinition TaskDefinition `json:"task_definition"`
}

type TriggerInterface

type TriggerInterface interface {
	GetFireTime(from time.Time) *time.Time
	IsRecurring() bool
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL