diff options
Diffstat (limited to 'src')
-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] |