Improved create and update
This commit is contained in:
parent
7280c6f41b
commit
d6991b5f09
|
@ -49,14 +49,12 @@
|
|||
(defn raw-massage-params
|
||||
"Sending empty strings, or numbers as strings, to the database often isn't
|
||||
helpful. Massage these `params` and `form-params` to eliminate these problems.
|
||||
We must take key field values out of just params, but if form-params are present
|
||||
we should take all other values out of form-params - because we need the key to
|
||||
load the form in the first place. `form-params` always override `params`.
|
||||
|
||||
**NOTE THAT** the parameter `key-fields` is deprecated and ignored."
|
||||
([params form-params key-fields]
|
||||
Date and time fields also need massaging."
|
||||
([request entity]
|
||||
(let
|
||||
[p (reduce
|
||||
[params (:params request)
|
||||
form-params (:form-params request)
|
||||
p (reduce
|
||||
merge
|
||||
{}
|
||||
(map
|
||||
|
@ -74,10 +72,8 @@
|
|||
(map
|
||||
#(massage-value % form-params)
|
||||
(keys form-params))))))
|
||||
([request key-fields]
|
||||
(raw-massage-params (:params request) (:form-params request) key-fields))
|
||||
([request]
|
||||
(raw-massage-params (:params request) (:form-params request) #{})))
|
||||
(raw-massage-params request nil)))
|
||||
|
||||
|
||||
(def massage-params
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
(ns adl-support.forms-support
|
||||
(:require [adl-support.core :refer [do-or-log-error do-or-return-reason]]
|
||||
(:require [adl-support.core :refer :all]
|
||||
[adl-support.utils :refer [descendants-with-tag safe-name singularise]]
|
||||
[clojure.core.memoize :as memo]
|
||||
[clojure.data.json :as json]
|
||||
|
@ -100,9 +100,10 @@
|
|||
`params` to have a value for each field in these `fields`."
|
||||
[params fields]
|
||||
`(merge
|
||||
(reduce {} (map #(hash-map (keyword %) nil) ~fields))
|
||||
(reduce merge {} (map #(hash-map (keyword %) nil) ~fields))
|
||||
~params))
|
||||
|
||||
|
||||
(defn property-defaults
|
||||
[entity]
|
||||
(reduce
|
||||
|
|
|
@ -4,29 +4,14 @@
|
|||
|
||||
(deftest massage-params-tests
|
||||
(testing "Massaging of params"
|
||||
(let [expected {:id 67}
|
||||
actual (massage-params {:id 67} {} #{:id})]
|
||||
(is (= expected actual) "numeric param"))
|
||||
(let [expected {:id 67}
|
||||
actual (massage-params {:id "67"} {} #{:id})]
|
||||
(is (= expected actual) "string param"))
|
||||
(let [expected {:id 67}
|
||||
actual (massage-params {"id" "67"} {} #{:id})]
|
||||
(is (= expected actual) "string keyword"))
|
||||
(let [expected {:id 67}
|
||||
actual (massage-params {:id 60} {:id 67} #{:id})]
|
||||
(is (= expected actual) "params and form-params differ"))
|
||||
(let [expected {:id 67 :offset 0 :limit 50}
|
||||
actual (massage-params {:id 60} {:id "67" :offset "0" :limit "50"} #{:id})]
|
||||
(is (= expected actual) "prefer values from form-params"))
|
||||
(let [expected {:id 67 :offset 0 :limit 50}
|
||||
actual (massage-params {:params {:id "67" :offset "0" :limit "50"} :form-params {}})]
|
||||
(is (= expected actual) "Request with no form params"))
|
||||
(let [expected {:id 67 :offset 0 :limit 50}
|
||||
actual (massage-params {:params {:id "0" :offset "1000" :limit "150"}
|
||||
:form-params {:id "67" :offset "0" :limit "50"}})]
|
||||
(is (= expected actual) "Request with form params, params and form params differ"))
|
||||
))
|
||||
(is (= expected actual) "Request with form params, params and form params differ"))))
|
||||
|
||||
|
||||
(deftest compose-exception-reason-tests
|
||||
(testing "Compose exception reason"
|
||||
|
|
Loading…
Reference in a new issue