16 changed files with 139 additions and 92 deletions
@ -1,18 +0,0 @@
|
||||
/* |
||||
------------------------------------------------------------------------------------------------------------------------ |
||||
####### sdk ####### Copyright (c) 2021 losyme ###################################################### MIT License ####### |
||||
------------------------------------------------------------------------------------------------------------------------ |
||||
*/ |
||||
|
||||
package factory |
||||
|
||||
import "forge.chapril.org/dune/jw" |
||||
|
||||
type Model interface { |
||||
CreateJob(job *jw.Job) (*jw.Job, error) |
||||
CreateWorkflow(wf *jw.Workflow) (*jw.Workflow, error) |
||||
} |
||||
|
||||
/* |
||||
######################################################################################################## @(°_°)@ ####### |
||||
*/ |
@ -1,23 +0,0 @@
|
||||
/* |
||||
------------------------------------------------------------------------------------------------------------------------ |
||||
####### sdk ####### Copyright (c) 2021 losyme ###################################################### MIT License ####### |
||||
------------------------------------------------------------------------------------------------------------------------ |
||||
*/ |
||||
|
||||
package runner |
||||
|
||||
import ( |
||||
"forge.chapril.org/dune/jw" |
||||
|
||||
"forge.chapril.org/dune/sdk/factory" |
||||
) |
||||
|
||||
type Model interface { |
||||
factory.Model |
||||
NextJob(namespace string) (*jw.Job, error) |
||||
UpdateJob(job *jw.Job) (*jw.Job, error) |
||||
} |
||||
|
||||
/* |
||||
######################################################################################################## @(°_°)@ ####### |
||||
*/ |
@ -0,0 +1,87 @@
|
||||
/* |
||||
------------------------------------------------------------------------------------------------------------------------ |
||||
####### sdk ####### Copyright (c) 2021 losyme ###################################################### MIT License ####### |
||||
------------------------------------------------------------------------------------------------------------------------ |
||||
*/ |
||||
|
||||
package sdk |
||||
|
||||
import ( |
||||
"time" |
||||
|
||||
"forge.chapril.org/dune/jw" |
||||
"forge.chapril.org/losyme/errors" |
||||
) |
||||
|
||||
const ErrStorage = errors.Sentinel("storage error") |
||||
|
||||
type JobsRunning map[string]int |
||||
|
||||
type JobsToRun interface { |
||||
Next() (*jw.Job, error) |
||||
} |
||||
|
||||
type SelectNextJob func(jr JobsRunning, jtr JobsToRun) (*jw.Job, error) |
||||
|
||||
type Dashboard struct { |
||||
Jobs struct { |
||||
Todo int |
||||
Pending int |
||||
Running int |
||||
Succeeded int |
||||
Failed int |
||||
Total int |
||||
} |
||||
Workflows struct { |
||||
Running int |
||||
Succeeded int |
||||
Failed int |
||||
Total int |
||||
} |
||||
} |
||||
|
||||
type Storage interface { |
||||
ValidateJob(job *jw.Job) error |
||||
InsertJob(job *jw.Job) (bool, error) |
||||
UpdateJob(job *jw.Job) error |
||||
NotifyJob(id string, data interface{}) error |
||||
SetJobPriority(id string, priority jw.Priority) error |
||||
SetJobRunAfter(id string, duration time.Duration) error |
||||
|
||||
NextJob(namespace string, fn SelectNextJob) (*jw.Job, error) |
||||
|
||||
ValidateWorkflow(wf *jw.Workflow) error |
||||
InsertWorkflow(wf *jw.Workflow, job *jw.Job) error |
||||
Workflow(id string, mustExist bool) (*jw.Workflow, error) |
||||
UpdateWorkflow(wf *jw.Workflow, job, nextJob *jw.Job) error |
||||
SetWorkflowPriority(id string, priority jw.Priority) error |
||||
|
||||
Dashboard() (*Dashboard, error) |
||||
Close() error |
||||
} |
||||
|
||||
type Logger interface { |
||||
Trace(msg string, kv ...interface{}) |
||||
Debug(msg string, kv ...interface{}) |
||||
Info(msg string, kv ...interface{}) |
||||
Notice(msg string, kv ...interface{}) |
||||
Warning(msg string, kv ...interface{}) |
||||
Error(msg string, kv ...interface{}) |
||||
} |
||||
|
||||
type Model interface { |
||||
CreateJob(job *jw.Job) (*jw.Job, error) |
||||
NextJob(namespace string) (*jw.Job, error) |
||||
UpdateJob(job *jw.Job) (*jw.Job, error) |
||||
CreateWorkflow(wf *jw.Workflow) (*jw.Workflow, error) |
||||
} |
||||
|
||||
type Runner interface { |
||||
Namespace() string |
||||
Model() Model |
||||
RunJob(job *jw.Job, logger Logger) |
||||
} |
||||
|
||||
/* |
||||
######################################################################################################## @(°_°)@ ####### |
||||
*/ |
Loading…
Reference in new issue