-
Notifications
You must be signed in to change notification settings - Fork 0
/
core.clj
125 lines (116 loc) · 4.07 KB
/
core.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
(ns cljobq-web.controllers.core
(:require
[cljobq-web.views.core :as views]
[cljobq-web.middleware :as middleware]
[cljobq.job :as cj]
[hiccup.util :refer [url]]
[ring.util.response :refer [redirect]]))
(defn jobs-controller [filt request queue]
(let [ctx (::middleware/context request)
db (:db ctx)
queue-names (cj/list-queue-names db)
stats (cj/get-stats db queue)
jobs (cond->> (cj/list-jobs db queue)
(= filt :queued) (filter #(= (:status %) "pending"))
(= filt :scheduled) (filter #(= (:status %) "scheduled")))]
(views/job-list
{:filt filt
:flash (:flash request)
:queue queue
:queue-names queue-names
:stats stats
:jobs jobs})))
(defn failed-jobs-controller [request queue]
(let [ctx (::middleware/context request)
db (:db ctx)
queue-names (cj/list-queue-names db)
stats (cj/get-stats db queue)
jobs (cj/list-failed-jobs db queue)]
(views/failed-job-list
{:flash (:flash request)
:queue queue
:queue-names queue-names
:stats stats
:jobs jobs})))
(defn recurring-jobs-controller [request queue]
(let [ctx (::middleware/context request)
db (:db ctx)
queue-names (cj/list-queue-names db)
stats (cj/get-stats db queue)
jobs (cj/list-recurring-jobs db queue)]
(views/recurring-job-list
{:flash (:flash request)
:queue queue
:queue-names queue-names
:stats stats
:jobs jobs})))
(defn job-controller [request id]
(let [ctx (::middleware/context request)
db (:db ctx)
job (-> (cj/get-job-by-id db {:id id})
cj/dbjob->friendly-job)]
(views/single-job
{:flash (:flash request)
:job job})))
(defn failed-job-controller [request id]
(let [ctx (::middleware/context request)
db (:db ctx)
job (-> (cj/get-failed-job-by-id db {:id id})
cj/dbjob->friendly-job)
related-job (some->> (:related-job-id job)
(cj/get-job-by-id db)
cj/dbjob->friendly-job)]
(views/single-failed-job
{:flash (:flash request)
:job job
:related-job related-job})))
(defn run-job-controller [request id]
(let [ctx (::middleware/context request)
db (:db ctx)
job (-> (cj/get-job-by-id db {:id id})
cj/dbjob->friendly-job)
{:keys [queue job-name]} job]
(cj/reenqueue-job! db {:id id})
(-> (redirect (str (url "/queued" {:queue queue})))
(assoc :flash
(str "Job "
job-name
" ["
queue
"] scheduled to run immediately.")))))
(defn retry-failed-controller [request id]
(let [ctx (::middleware/context request)
db (:db ctx)
job (-> (cj/get-failed-job-by-id db {:id id})
cj/dbjob->friendly-job)
{:keys [queue job-name]} job]
(cj/retry-failed-job! db {:id id})
(-> (redirect (str (url "/queued" {:queue queue})))
(assoc :flash
(str "Job "
job-name
" ["
queue
"] scheduled to retry immediately.")))))
(defn delete-failed-controller [request id]
(let [ctx (::middleware/context request)
db (:db ctx)
job (-> (cj/get-failed-job-by-id db {:id id})
cj/dbjob->friendly-job)
{:keys [queue job-name]} job]
(cj/delete-failed-job-by-id! db {:id id})
(-> (redirect (str (url "/failed" {:queue queue})))
(assoc :flash
(str "Failed job "
job-name
" ["
queue
"] deleted.")))))
(defn clear-failed-controller [request queue]
(let [ctx (::middleware/context request)
db (:db ctx)]
(if queue
(cj/reset-failed-jobs-by-queue! db {:queue_name queue})
(cj/reset-failed-jobs! db))
(-> (redirect (str (url "/failed" {:queue queue})))
(assoc :flash "Failed jobs cleared."))))