migrates accounts to new dialog, adds client search to user
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
[malli.core :as mc]
|
||||
[malli.error :as me]
|
||||
[malli.transform :as mt2]
|
||||
[ring.middleware.nested-params :refer [parse-nested-keys]]))
|
||||
[slingshot.slingshot :refer [throw+ try+]]))
|
||||
|
||||
(defn html-response [hiccup & {:keys [status headers oob] :or {status 200 headers {} oob []}}]
|
||||
{:status status
|
||||
@@ -97,11 +97,13 @@
|
||||
(defn keyword->str [k]
|
||||
(subs (str k) 1))
|
||||
|
||||
(defn validation-error [m & [data]]
|
||||
(throw+ (ex-info m (merge data {:type :validation}))))
|
||||
|
||||
(defn wrap-schema-decode [handler & {:keys [form-schema query-schema route-schema params-schema]}]
|
||||
(fn [{:keys [form-params query-params params] :as request}]
|
||||
(try
|
||||
|
||||
(handler (cond-> request
|
||||
(let [request (try
|
||||
(cond-> request
|
||||
(and (:params request) params-schema)
|
||||
(assoc :params
|
||||
(mc/coerce
|
||||
@@ -123,7 +125,7 @@
|
||||
mt2/json-transformer) ))
|
||||
|
||||
(and form-schema form-params)
|
||||
(assoc :parsed-form-params
|
||||
(assoc :form-params
|
||||
(mc/coerce
|
||||
form-schema
|
||||
form-params
|
||||
@@ -140,23 +142,24 @@
|
||||
(mt2/transformer
|
||||
(mt2/key-transformer {:encode name :decode keyword})
|
||||
mt2/string-transformer
|
||||
mt2/json-transformer) ))))
|
||||
mt2/json-transformer) )))
|
||||
(catch Exception e
|
||||
(alog/warn ::validation-error :error e)
|
||||
(html-response [:span.error-content.text-red-500 (str/join ", "
|
||||
(mapcat identity
|
||||
(-> e
|
||||
(ex-data )
|
||||
:data
|
||||
:explain
|
||||
me/humanize
|
||||
vals)))]
|
||||
:status 400)))))
|
||||
|
||||
(validation-error (str/join ", "
|
||||
(->> e
|
||||
(ex-data )
|
||||
:data
|
||||
:explain
|
||||
me/humanize
|
||||
(map (fn [[k v]]
|
||||
(str (if (keyword? k)
|
||||
(name k)
|
||||
k) ": " (str/join ", " v))
|
||||
)))))))] (handler request))))
|
||||
(defn ref->enum-schema [n]
|
||||
(into [:enum {:decode/string #(keyword n %)}]
|
||||
(for [{:db/keys [ident]} (all-schema)
|
||||
:when (= n (namespace ident))]
|
||||
:when (= n (namespace ident))]
|
||||
ident)))
|
||||
|
||||
(defn ref->select-options [n & {:keys [allow-nil?]}]
|
||||
@@ -178,7 +181,7 @@
|
||||
:else
|
||||
k)))))})
|
||||
|
||||
(defn namespaceize-decoder [n]
|
||||
#_(defn namespaceize-decoder [n]
|
||||
{:exit (fn [m]
|
||||
(when m
|
||||
(reduce
|
||||
@@ -189,3 +192,23 @@
|
||||
m
|
||||
m)))})
|
||||
|
||||
|
||||
(defn wrap-form-4xx [handler]
|
||||
(fn [request]
|
||||
(try+
|
||||
(handler request)
|
||||
|
||||
|
||||
(catch [:type :validation] e
|
||||
(alog/warn ::form-4xx :error e)
|
||||
(html-response [:span.error-content.text-red-500 (:message &throw-context)]
|
||||
:status 400))))
|
||||
)
|
||||
|
||||
(defn apply-middleware-to-all-handlers [key->handler f]
|
||||
(->> key->handler
|
||||
(reduce
|
||||
(fn [key-handler [k v]]
|
||||
(assoc key-handler k (f v)))
|
||||
key->handler)
|
||||
))
|
||||
|
||||
Reference in New Issue
Block a user