65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
package internal
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/renstrom/shortuuid"
|
|
)
|
|
|
|
type BaseTask struct {
|
|
state TaskState
|
|
data TaskData
|
|
err error
|
|
id string
|
|
}
|
|
|
|
func NewBaseTask() *BaseTask {
|
|
return &BaseTask{
|
|
data: make(TaskData),
|
|
id: shortuuid.New(),
|
|
}
|
|
}
|
|
|
|
func (t *BaseTask) SetState(state TaskState) {
|
|
t.state = state
|
|
}
|
|
|
|
func (t *BaseTask) SetData(key, val string) {
|
|
if t.data == nil {
|
|
t.data = make(TaskData)
|
|
}
|
|
t.data[key] = val
|
|
}
|
|
|
|
func (t *BaseTask) Done() {
|
|
if t.err != nil {
|
|
t.state = TaskStateFailed
|
|
} else {
|
|
t.state = TaskStateComplete
|
|
}
|
|
}
|
|
|
|
func (t *BaseTask) Fail(err error) error {
|
|
t.err = err
|
|
return err
|
|
}
|
|
|
|
func (t *BaseTask) Result() TaskResult {
|
|
stateStr := t.state.String()
|
|
errStr := ""
|
|
if t.err != nil {
|
|
errStr = t.err.Error()
|
|
}
|
|
|
|
return TaskResult{
|
|
State: stateStr,
|
|
Error: errStr,
|
|
Data: t.data,
|
|
}
|
|
}
|
|
|
|
func (t *BaseTask) String() string { return fmt.Sprintf("%T: %s", t, t.ID()) }
|
|
func (t *BaseTask) ID() string { return t.id }
|
|
func (t *BaseTask) State() TaskState { return t.state }
|
|
func (t *BaseTask) Error() error { return t.err }
|