diff options
Diffstat (limited to 'src/clj/queue_api')
| -rw-r--r-- | src/clj/queue_api/db/core.clj | 9 | ||||
| -rw-r--r-- | src/clj/queue_api/routes/services.clj | 12 | 
2 files changed, 15 insertions, 6 deletions
diff --git a/src/clj/queue_api/db/core.clj b/src/clj/queue_api/db/core.clj index c76f0fb..0482feb 100644 --- a/src/clj/queue_api/db/core.clj +++ b/src/clj/queue_api/db/core.clj @@ -102,7 +102,12 @@          (if (seq jn)            (first jn)))))) -(defn request-job +(defn agent +  "Get a agent by id" +  [id] +  (d/entity @conn [:agent/id id])) + +(defn fittest-job    "Get the fittest job for a agent `id`."    [^String id]    (let [a (d/entity @conn [:agent/id id])] @@ -146,7 +151,7 @@    [^String id]    (let [a (d/entity @conn [:agent/id id])]      (if-not (nil? a) -      (let [jid (:job/id (request-job id))] +      (let [jid (:job/id (fittest-job id))]          (end-job a)          (start-job id jid)          jid))))
\ No newline at end of file diff --git a/src/clj/queue_api/routes/services.clj b/src/clj/queue_api/routes/services.clj index 0b26281..766f831 100644 --- a/src/clj/queue_api/routes/services.clj +++ b/src/clj/queue_api/routes/services.clj @@ -44,10 +44,14 @@        :return {:job_request {:job_id s/Any :agent_id String}}        :body-params [agent_id :- String]        :summary "Request a job to a given agent" -      (let [j (db/dequeue-job agent_id)] -        (if (nil? j) -          (bad-request {:message "Agent does not exist"}) -          (ok {:job_request {:job_id j :agent_id agent_id}})))) + +      (let [a (agent agent_id)] +        (if (nil? a) +          (not-found {:message "Agent does not exist"})) +        (let [j (db/dequeue-job agent_id)] +          (if (nil? j) +            (not-found {:message "There is no job available for given agent"}) +            (ok {:job_request {:job_id j :agent_id agent_id}})))))      (GET "/" []        :return {:completed  [String]  | 
