Skip to content

Commit 8ece47f

Browse files
Simplify namespace interdependencies
1 parent b62de9a commit 8ece47f

File tree

7 files changed

+54
-59
lines changed

7 files changed

+54
-59
lines changed

Makefile

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@
22

33
GIT_SHA := $(shell git rev-parse HEAD)
44

5-
docker-image:
6-
DOCKER_BUILDKIT=1 docker build -f deploy/Dockerfile -t flamebin:latest .
7-
85
remote-pull:
9-
(cd /flamebin/qa/flamebin.dev && git fetch && git reset --hard origin/develop && cd /flamebin/prod/flamebin.dev && git fetch && git reset --hard origin/prod)
6+
git fetch && git reset --hard origin/develop
107

118
compose:
129
GIT_SHA=$(GIT_SHA) docker-compose -f deploy/compose.yml up --build -d; \

src/flamebin/config.clj

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
(ns flamebin.config
22
(:require [clojure.java.io :as io]
33
[clojure.string :as str]
4-
flamebin.util
5-
malli.core
6-
malli.experimental.time
7-
malli.registry
84
[mount.lite :as mount]
95
[omniconf.core :as cfg]
106
[taoensso.timbre :as log]
@@ -94,10 +90,4 @@
9490

9591
;;;; Misc initialization
9692

97-
(malli.registry/set-default-registry!
98-
(malli.registry/composite-registry
99-
(malli.core/default-schemas)
100-
(malli.experimental.time/schemas)
101-
flamebin.util/nano-id-registry))
102-
10393
(taoensso.timbre.tools.logging/use-timbre)

src/flamebin/dto.clj

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,12 @@
11
(ns flamebin.dto
22
(:require [clojure.test.check.generators :as gen]
3-
[flamebin.config :refer [config]]
4-
[malli.core :as m]
3+
[flamebin.util.malli :as fmalli]
54
[malli.experimental.lite :as mlite]
6-
[malli.experimental.time.transform]
7-
[malli.transform :as mt]
85
[malli.util :as mu])
9-
(:import java.time.Instant))
6+
(:import (java.time Instant)))
107

11-
config ;; Don't remove.
12-
13-
(def ^:private int-to-boolean
14-
{:decoders
15-
{:boolean #(cond (= % 1) true
16-
(= % 0) false
17-
:else %)}})
18-
19-
(def global-transformer
20-
(mt/transformer
21-
mt/string-transformer
22-
(mt/key-transformer {:decode keyword})
23-
int-to-boolean
24-
malli.experimental.time.transform/time-transformer
25-
mt/default-value-transformer))
26-
27-
(defn coerce [value schema]
28-
(m/coerce schema value global-transformer))
8+
(def coerce fmalli/coerce)
9+
(reset-meta! #'coerce (meta #'fmalli/coerce))
2910

3011
(defmacro ^:private defschema-and-constructor [schema-name schema-val]
3112
(assert (= (first schema-val) '->))

src/flamebin/util.clj

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,6 @@
3131

3232
#_(every? valid-id? (repeatedly 10000 new-id))
3333

34-
(defn- gen-invoke
35-
"Given a 0-arg function `f`, return a generator that invokes it whenever a value
36-
needs to be generated."
37-
[f]
38-
(#'gen/make-gen (fn [& _] (rose/pure (f)))))
39-
40-
(def nano-id-registry
41-
{:nano-id [:and {:gen/gen (gen-invoke new-id)}
42-
:string
43-
[:fn {:error/message "Not valid ID"} valid-id?]]})
44-
4534
(let [generator (encore/rand-id-fn {:chars :alphanumeric, :len secret-token-bytes})]
4635
(defn secret-token [] (generator)))
4736

src/flamebin/util/malli.clj

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
(ns flamebin.util.malli
2+
(:require [clojure.test.check.generators :as gen]
3+
[clojure.test.check.rose-tree :as rose]
4+
[flamebin.util :as util]
5+
[malli.core :as m]
6+
[malli.experimental.time]
7+
[malli.experimental.time.transform]
8+
[malli.registry]
9+
[malli.transform :as mt]))
10+
11+
(defn- gen-invoke
12+
"Given a 0-arg function `f`, return a generator that invokes it whenever a value
13+
needs to be generated."
14+
[f]
15+
(#'gen/make-gen (fn [& _] (rose/pure (f)))))
16+
17+
(def nano-id-registry
18+
{:nano-id [:and {:gen/gen (gen-invoke util/new-id)}
19+
:string
20+
[:fn {:error/message "Not valid ID"} util/valid-id?]]})
21+
22+
(def ^:private int-to-boolean
23+
{:decoders
24+
{:boolean #(cond (= % 1) true
25+
(= % 0) false
26+
:else %)}})
27+
28+
(def global-transformer
29+
(mt/transformer
30+
mt/string-transformer
31+
(mt/key-transformer {:decode keyword})
32+
int-to-boolean
33+
malli.experimental.time.transform/time-transformer
34+
mt/default-value-transformer))
35+
36+
(defn coerce [value schema]
37+
(m/coerce schema value global-transformer))
38+
39+
(malli.registry/set-default-registry!
40+
(malli.registry/composite-registry
41+
(malli.core/default-schemas)
42+
(malli.experimental.time/schemas)
43+
nano-id-registry))

src/flamebin/web.clj

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@
55
[flamebin.infra.metrics :as ms]
66
[flamebin.rate-limiter :as rl]
77
[flamebin.util :refer [raise valid-id?]]
8-
[flamebin.util.streams :as streams]
8+
[flamebin.web.middleware :refer :all]
99
[flamebin.web.pages :as pages]
10-
[malli.core :as m]
11-
malli.error
1210
[mount.lite :as mount]
13-
[muuntaja.core :as content]
1411
[muuntaja.middleware :as content.mw]
1512
[org.httpkit.server :as server]
1613
[reitit.coercion.malli]
@@ -20,9 +17,7 @@
2017
[reitit.ring.middleware.parameters :refer [parameters-middleware]]
2118
[ring.middleware.head]
2219
[ring.middleware.resource]
23-
[taoensso.timbre :as log]
24-
[flamebin.web.middleware :refer :all])
25-
(:import clojure.lang.ExceptionInfo))
20+
[taoensso.timbre :as log]))
2621

2722
;; Endpoints: API
2823

src/flamebin/web/middleware.clj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
(ns flamebin.web.middleware
22
(:require [flamebin.infra.metrics :as ms]
33
[flamebin.util :refer [raise]]
4+
[flamebin.util.malli :refer [coerce]]
45
[flamebin.util.streams :as streams]
56
[malli.core :as m]
6-
[malli.experimental.lite]
77
[malli.error]
8+
[malli.experimental.lite]
89
[muuntaja.core :as content]
910
[reitit.ring :as ring]
10-
[taoensso.timbre :as log]
11-
[flamebin.dto :as dto])
11+
[taoensso.timbre :as log])
1212
(:import (clojure.lang ExceptionInfo)))
1313

1414
(defn resp
@@ -100,6 +100,6 @@
100100
(let [schema (if (satisfies? m/Schema schema-data)
101101
schema-data
102102
(malli.experimental.lite/schema schema-data))
103-
coerced (dto/coerce query-params schema)]
103+
coerced (coerce query-params schema)]
104104
(handler (assoc request :query-params coerced)))
105105
(handler request)))))

0 commit comments

Comments
 (0)