task

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jul 10, 2024 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultArgsField = "args"
View Source
const DefaultErrorField = "error"
View Source
const DefaultFinishedAtField = "finished_at"
View Source
const DefaultFuncField = "func"
View Source
const DefaultIdField = "id"
View Source
const DefaultResultField = "result"
View Source
const DefaultRunAtField = "run_at"
View Source
const DefaultStartedAtField = "started_at"
View Source
const DefaultStatusField = "status"
View Source
const DefaultTableName = "barn_task"

Variables

This section is empty.

Functions

This section is empty.

Types

type PostgresTaskRepository added in v0.3.1

type PostgresTaskRepository struct {
	// contains filtered or unexported fields
}

func (*PostgresTaskRepository) Create added in v0.3.1

func (r *PostgresTaskRepository) Create(tx *sql.Tx, t *Task) error

func (*PostgresTaskRepository) CreateTable added in v0.3.1

func (r *PostgresTaskRepository) CreateTable(tx *sql.Tx) error

func (*PostgresTaskRepository) DeleteAll added in v0.3.1

func (r *PostgresTaskRepository) DeleteAll(tx *sql.Tx) error

func (*PostgresTaskRepository) DeleteOld added in v0.3.1

func (r *PostgresTaskRepository) DeleteOld(tx *sql.Tx, moment time.Time) (int, error)

func (*PostgresTaskRepository) FindNext added in v0.3.1

func (r *PostgresTaskRepository) FindNext(tx *sql.Tx) (*Task, error)

func (*PostgresTaskRepository) Save added in v0.3.1

func (r *PostgresTaskRepository) Save(tx *sql.Tx, t *Task) error

type Status

type Status string
const (
	Queued Status = "Q"
	Done   Status = "D"
	Failed Status = "F"
)

type Task

type Task struct {
	Id         int
	RunAt      time.Time
	Func       string
	Args       any
	Status     Status
	StartedAt  *time.Time
	FinishedAt *time.Time
	Result     any
	Error      *string
}

func (Task) LogValue

func (e Task) LogValue() slog.Value

type TaskFunc added in v0.3.5

type TaskFunc func(tx *sql.Tx, args any) (any, error)

type TaskHandler

type TaskHandler func(tx *sql.Tx, task *Task) error

type TaskQueryConfig

type TaskQueryConfig struct {
	TableName       string
	IdField         string
	RunAtField      string
	FuncField       string
	ArgsField       string
	StatusField     string
	StartedAtField  string
	FinishedAtField string
	ResultField     string
	ErrorField      string
}

type TaskRegistry added in v0.3.5

type TaskRegistry struct {
	// contains filtered or unexported fields
}

func NewTaskRegistry added in v0.3.5

func NewTaskRegistry() *TaskRegistry

func (*TaskRegistry) ApplyAsync added in v0.3.5

func (r *TaskRegistry) ApplyAsync(tx *sql.Tx, name string, args any, countdown *int, eta *time.Time) error

func (*TaskRegistry) Call added in v0.3.5

func (r *TaskRegistry) Call(tx *sql.Tx, name string, args any) (any, error)

func (*TaskRegistry) Delay added in v0.3.5

func (r *TaskRegistry) Delay(tx *sql.Tx, name string, args any, countdown *int, eta *time.Time) error

func (*TaskRegistry) Register added in v0.3.5

func (r *TaskRegistry) Register(name string, f TaskFunc)

func (*TaskRegistry) Unregister added in v0.3.5

func (r *TaskRegistry) Unregister(name string)

type TaskRepository

type TaskRepository interface {
	FindNext(tx *sql.Tx) (*Task, error)
	Create(tx *sql.Tx, task *Task) error
	Save(tx *sql.Tx, task *Task) error
	DeleteOld(tx *sql.Tx, t time.Time) (int, error)
}

func NewPostgresTaskRepository added in v0.3.1

func NewPostgresTaskRepository(config ...TaskQueryConfig) TaskRepository

type Worker

type Worker struct {
	// contains filtered or unexported fields
}

func NewWorker

func NewWorker(db *sql.DB, config *WorkerConfig) *Worker

func (*Worker) Start

func (w *Worker) Start()

func (*Worker) StartContext

func (w *Worker) StartContext(ctx context.Context)

func (*Worker) Stop

func (w *Worker) Stop()

type WorkerConfig

type WorkerConfig struct {
	Log        *slog.Logger
	Repository TaskRepository
	Cron       string
	Handler    TaskHandler
}

Jump to

Keyboard shortcuts

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