|
5 | 5 | "github.com/gemsorg/assignment/pkg/authentication"
|
6 | 6 | "github.com/gemsorg/assignment/pkg/authorization"
|
7 | 7 | "github.com/gemsorg/assignment/pkg/datastore"
|
| 8 | + "github.com/gemsorg/assignment/pkg/tasksvc" |
8 | 9 | )
|
9 | 10 |
|
10 | 11 | type AssignmentService interface {
|
@@ -47,22 +48,37 @@ func (s *service) GetAssignment(id string) (*assignment.Assignment, error) {
|
47 | 48 | }
|
48 | 49 |
|
49 | 50 | func (s *service) CreateAssignment(a assignment.NewAssignment, set *assignment.Settings) (*assignment.Assignment, error) {
|
| 51 | + if set == nil { |
| 52 | + return s.store.CreateAssignment(a) |
| 53 | + } |
50 | 54 | // if job has a whitelist, check if worker is part of it
|
51 | 55 | if set.Whitelist {
|
52 | 56 | wl, err := s.store.GetWhitelist(a.JobID, a.WorkerID)
|
53 | 57 | if wl == nil || err != nil {
|
54 | 58 | return nil, assignment.WorkerNotWhitelisted{}
|
55 | 59 | }
|
56 | 60 | }
|
| 61 | + |
| 62 | + // Get worker's assignment for this job |
| 63 | + assigned, err := s.store.WorkerAlreadyAssigned(a.JobID, a.WorkerID) |
| 64 | + a.WorkerAlreadyAssigned = assigned |
| 65 | + |
57 | 66 | // Check if the assignment is allowed
|
58 | 67 | allowed, err := a.IsAllowed(set)
|
59 | 68 | if !allowed {
|
60 | 69 | return nil, err
|
61 | 70 | }
|
62 | 71 |
|
63 |
| - // Get worker's assignment for this job |
64 |
| - assigned, err := s.store.WorkerAlreadyAssigned(a.JobID, a.WorkerID) |
65 |
| - a.WorkerAlreadyAssigned = assigned |
| 72 | + // Get a task from the task service |
| 73 | + params := tasksvc.SearchParams{ |
| 74 | + Random: true, |
| 75 | + } |
| 76 | + result, err := tasksvc.Search(a.JobID, s.authorizor.GetAuthToken(), params) |
| 77 | + |
| 78 | + if err != nil { |
| 79 | + return nil, err |
| 80 | + } |
| 81 | + a.TaskID = result.ID |
66 | 82 |
|
67 | 83 | return s.store.CreateAssignment(a)
|
68 | 84 | }
|
|
0 commit comments