pkg

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: May 24, 2023 License: Apache-2.0 Imports: 11 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ISONanoString added in v1.0.2

func ISONanoString(theTime time.Time) string

func StringPointer added in v1.0.2

func StringPointer(theString string) *string

func TimeToString

func TimeToString(theTime time.Time) string

Types

type CronTrigger added in v1.0.1

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

func NewCronTrigger added in v1.0.1

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

func (CronTrigger) GetFireTime added in v1.0.2

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

func (CronTrigger) IsRecurring added in v1.0.1

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 added in v1.0.2

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

func (ExecuteOnceTrigger) IsRecurring added in v1.0.1

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 added in v1.0.2

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

func (*Scheduler) DeleteTaskDefinitions added in v1.0.3

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

func (*Scheduler) DeleteTaskDefinitionsByMetadataQuery added in v1.0.3

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

func (*Scheduler) GetTaskDefinitions added in v1.0.3

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

func (*Scheduler) ListTaskDefinitions added in v1.0.3

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

func (*Scheduler) Run

func (s *Scheduler) Run()

func (*Scheduler) Stop added in v1.0.2

func (s *Scheduler) Stop()

func (*Scheduler) UpsertTaskDefinition added in v1.0.3

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 added in v1.0.2

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 added in v1.0.2

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

func (TaskDefinition) GetFireTimeFrom added in v1.0.2

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

func (TaskDefinition) GetIdBytes added in v1.0.2

func (t TaskDefinition) GetIdBytes() []byte

func (TaskDefinition) GetNextFireTime added in v1.0.2

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

func (TaskDefinition) GetTrigger added in v1.0.2

func (t TaskDefinition) GetTrigger() TriggerInterface

func (TaskDefinition) IdString added in v1.0.2

func (t TaskDefinition) IdString() string

type TaskInstance added in v1.0.2

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