aboutsummaryrefslogtreecommitdiff
path: root/src/clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/clj')
-rw-r--r--src/clj/queue_api/db/core.clj9
-rw-r--r--src/clj/queue_api/routes/services.clj12
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]