kra-new/internal/biz/task.go

46 lines
1.4 KiB
Go

package biz
import (
"context"
"time"
)
type TimedTask struct {
ID uint
CreatedAt time.Time
UpdatedAt time.Time
Name, Description, Spec string
WithSeconds bool
ExecutorType, MethodName string
Params []byte
HTTPURL, HTTPMethod string
HTTPHeader []byte
HTTPBody string
HTTPAllowPrivate, Enabled bool
EnabledFilter *bool
}
type TimedTaskLog struct {
ID uint
CreatedAt time.Time
TaskID uint
TaskName, TriggerType string
StartedAt, FinishedAt time.Time
DurationMS int64
Status, ErrorMsg, Output string
}
type TaskRepo interface {
CreateTask(context.Context, *TimedTask) error
UpdateTask(context.Context, *TimedTask) error
DeleteTask(context.Context, uint) error
FindTask(context.Context, uint) (*TimedTask, error)
ListTasks(context.Context, int, int, *TimedTask) ([]*TimedTask, int64, error)
ToggleTask(context.Context, uint, bool) error
RecordTaskLog(context.Context, *TimedTaskLog) error
ListTaskLogs(context.Context, int, int, uint, string) ([]*TimedTaskLog, int64, error)
CleanupLogs(context.Context, time.Time) error
}
type TaskUsecase struct{ repo TaskRepo }
func NewTaskUsecase(repo TaskRepo) *TaskUsecase { return &TaskUsecase{repo: repo} }
func (uc *TaskUsecase) Repo() TaskRepo { return uc.repo }