summaryrefslogtreecommitdiff
path: root/plugins/jobs/job/job_options.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jobs/job/job_options.go')
-rw-r--r--plugins/jobs/job/job_options.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/plugins/jobs/job/job_options.go b/plugins/jobs/job/job_options.go
new file mode 100644
index 00000000..b7e4ed36
--- /dev/null
+++ b/plugins/jobs/job/job_options.go
@@ -0,0 +1,32 @@
+package job
+
+import "time"
+
+// Options carry information about how to handle given job.
+type Options struct {
+ // Priority is job priority, default - 10
+ // pointer to distinguish 0 as a priority and nil as priority not set
+ Priority int64 `json:"priority"`
+
+ // Pipeline manually specified pipeline.
+ Pipeline string `json:"pipeline,omitempty"`
+
+ // Delay defines time duration to delay execution for. Defaults to none.
+ Delay int64 `json:"delay,omitempty"`
+}
+
+// Merge merges job options.
+func (o *Options) Merge(from *Options) {
+ if o.Pipeline == "" {
+ o.Pipeline = from.Pipeline
+ }
+
+ if o.Delay == 0 {
+ o.Delay = from.Delay
+ }
+}
+
+// DelayDuration returns delay duration in a form of time.Duration.
+func (o *Options) DelayDuration() time.Duration {
+ return time.Second * time.Duration(o.Delay)
+}