/
cleanup.clj
37 lines (33 loc) · 1.15 KB
/
cleanup.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
(ns re-share.es.cleanup
"Periodcal ES index cleanup and creation"
(:require
[zenati.core :refer (create-index delete-index exists?)]
[re-share.es.common :refer (index)]
[clojure.core.strint :refer (<<)]
[taoensso.timbre :refer (refer-timbre)]
[clojure.core.strint :refer (<<)]
[chime :refer [chime-ch]]
[clj-time.core :as t]
[re-share.schedule :refer (watch every-day)]))
(refer-timbre)
(defn next-index
"Create tommorow index for each type"
[k mappings]
(watch :create-next-day-index (every-day 23)
(fn []
(let [tommorow (t/plus (t/now) (t/days 1))]
(doseq [[t m] mappings]
(create-index (index k t tommorow) {:mappings {t m}}))))))
(defn purge-index
"Clear index from last week"
[k mappings]
(watch :clear-last-week-index (every-day 23)
(fn []
(let [last-week (t/minus (t/now) (t/days 7))]
(doseq [[t m] mappings
:let [idx (keyword (index k t last-week))]]
(when-not (exists? idx)
(delete-index idx)))))))
(defn setup-index-jobs [k mappings]
(next-index k mappings)
(purge-index k mappings))