-
Notifications
You must be signed in to change notification settings - Fork 3
/
specs.clj
31 lines (28 loc) · 974 Bytes
/
specs.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
(ns piped.specs
(:require [clojure.spec.alpha :as s]))
(s/def :piped/client-opts map?)
(s/def :piped/queue-url string?)
(s/def :piped/producer-parallelism pos-int?)
(s/def :piped/consumer-parallelism pos-int?)
(s/def :piped/acker-parallelism pos-int?)
(s/def :piped/nacker-parallelism pos-int?)
(s/def :piped/blocking-consumers boolean?)
(s/def :piped/message map?)
(s/def :piped/action #{:ack :nack})
(s/def :piped/consumer-fn ifn?)
(s/def :piped/transformer ifn?)
(s/def :piped/system any?)
(s/def :piped/options-map
(s/keys
:req-un [:piped/queue-url
:piped/consumer-fn]
:opt-un [:piped/client-opts
:piped/producer-parallelism
:piped/consumer-parallelism
:piped/acker-parallelism
:piped/nacker-parallelism
:piped/blocking-consumers]))
(defn assert-options [config]
(if-not (s/valid? :piped/options-map config)
(throw (ex-info "System options were invalid." {}))
true))