aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/clj/queue_api/db/core.clj29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/clj/queue_api/db/core.clj b/src/clj/queue_api/db/core.clj
index 0ad9b81..72785ef 100644
--- a/src/clj/queue_api/db/core.clj
+++ b/src/clj/queue_api/db/core.clj
@@ -2,7 +2,8 @@
(:require [datascript.core :as d]
[mount.core :as mount]
[clj-time.core :as time])
- (:import (clojure.lang Keyword)))
+ (:import (clojure.lang Keyword))
+ (:refer-clojure :exclude [agent]))
(def schema {:agent/id {:db/unique :db.unique/identity}
:agent/primary-skillset {:db/cardinality :db.cardinality/many}
@@ -46,7 +47,7 @@
[?x :job/agent ?e]]
@conn id s)))
-(defn q-job
+(defn query-job
"Query jobs and sort them by date
`u`: urgent flag
`s`: status of the job
@@ -65,7 +66,7 @@
(sort-by first)
(map #(d/entity @conn [:job/id (last %)]))))
-(defn q-status
+(defn query-status
"Query job by status `s`"
[s]
(d/q '[:find ?id :in $ ?status
@@ -87,18 +88,18 @@
(defn sum-queue
"List all jobs aggregated by status"
[]
- {:completed (map first (q-status :completed))
- :processing (map first (q-status :processing))
- :unassigned (map first (q-status :unassigned))})
+ {:completed (map first (query-status :completed))
+ :processing (map first (query-status :processing))
+ :unassigned (map first (query-status :unassigned))})
-(defn q-skillset
+(defn query-skillset
"First query for :unassigned jobs with skillset of `s` and flagged as urgent
if nothing was found query for not urgent ones."
[s]
- (let [ju (q-job true :unassigned s)]
+ (let [ju (query-job true :unassigned s)]
(if (seq ju)
(first ju)
- (let [jn (q-job false :unassigned s)]
+ (let [jn (query-job false :unassigned s)]
(if (seq jn)
(first jn))))))
@@ -117,12 +118,12 @@
[^String id]
(let [a (d/entity @conn [:agent/id id])]
(if (not (nil? a))
- (let [p (q-skillset (:agent/primary-skillset a))]
+ (let [p (query-skillset (:agent/primary-skillset a))]
(if-not (nil? p)
p
- (q-skillset (:agent/secondary-skillset a)))))))
+ (query-skillset (:agent/secondary-skillset a)))))))
-(defn t-job
+(defn transact-job
"Transact status `s` and agent `a` of a job `id`"
([^String id ^Keyword s]
(d/transact! conn [{:job/id id
@@ -143,13 +144,13 @@
[^String a]
(let [jid (-> a :agent/job :job/id)]
(if (not (nil? jid))
- (t-job jid :completed))))
+ (transact-job jid :completed))))
(defn start-job
"Change status of a job `j` to :processing
and bind it to an agent `a`"
[^String a ^String j]
- (when-not (nil? j) (t-job j :processing a) (bind-agent a j)))
+ (when-not (nil? j) (transact-job j :processing a) (bind-agent a j)))
(defn dequeue-job
"Dequeue a job to a agent `id`"