forked from getfider/fider
-
Notifications
You must be signed in to change notification settings - Fork 0
/
worker.go
60 lines (52 loc) · 1.29 KB
/
worker.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package mock
import (
"github.com/getfider/fider/app"
"github.com/getfider/fider/app/models"
"github.com/getfider/fider/app/pkg/log/noop"
"github.com/getfider/fider/app/pkg/worker"
)
// Worker is fake wrapper for background worker
type Worker struct {
tenant *models.Tenant
user *models.User
services *app.Services
baseURL string
}
func createWorker(services *app.Services) *Worker {
return &Worker{
services: services,
}
}
// OnTenant set current context tenant
func (w *Worker) OnTenant(tenant *models.Tenant) *Worker {
w.tenant = tenant
return w
}
// AsUser set current context user
func (w *Worker) AsUser(user *models.User) *Worker {
w.user = user
return w
}
// WithBaseURL set current context baseURL
func (w *Worker) WithBaseURL(baseURL string) *Worker {
w.baseURL = baseURL
return w
}
// Execute given task with current context
func (w *Worker) Execute(task worker.Task) error {
context := worker.NewContext("0", task, nil, noop.NewLogger())
context.SetServices(w.services)
context.SetUser(w.user)
context.SetTenant(w.tenant)
context.SetBaseURL(w.baseURL)
return task.Job(context)
}
// NewNoopTask returns a worker task that does nothing
func NewNoopTask() worker.Task {
return worker.Task{
Name: "Noop Task",
Job: func(c *worker.Context) error {
return nil
},
}
}