From 5860a53abfca1bafe9deffbc2cbdd09a2ad7585a Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Thu, 9 Aug 2018 13:21:18 +0100 Subject: [PATCH 1/4] Ensure we're using the right names when checking params --- src/adl/to_selmer_routes.clj | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/adl/to_selmer_routes.clj b/src/adl/to_selmer_routes.clj index b6bff0b..7779a43 100644 --- a/src/adl/to_selmer_routes.clj +++ b/src/adl/to_selmer_routes.clj @@ -77,7 +77,7 @@ 'if (list 'all-keys-present? - 'params (key-names e true)) + 'params (set (map #(safe-name % :sql) (key-names e true)))) (list 'support/do-or-log-error (list @@ -302,6 +302,9 @@ (defn make-form-post-handler-content + "Generate the body of the post handler for the form `f` of + entity `e` in application `a`. The argument `n` is bound to the name + of the function, but is not currently used." ;; Literally the only thing the post handler has to do is to ;; generate the database store operation. Then it can hand off ;; to the get handler. @@ -317,7 +320,7 @@ 'params (set (map - #(-> % :attrs :name) + #(safe-name (-> % :attrs :name) :sql) (insertable-properties e)))) 'result (list From 0f9dc14ee47db378e119b492a0551a3951282002 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Sun, 16 Sep 2018 16:52:05 +0100 Subject: [PATCH 2/4] Fixing database record creation issues. --- src/adl/to_json_routes.clj | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/adl/to_json_routes.clj b/src/adl/to_json_routes.clj index 1918abc..919bd5e 100644 --- a/src/adl/to_json_routes.clj +++ b/src/adl/to_json_routes.clj @@ -77,7 +77,18 @@ ['request] (list 'let - ['params '(massage-params request)] + ['params (list + 'merge + (apply hash-map + (interleave + (map + #(keyword (column-name %)) + (descendants-with-tag + (:entity query) + :property + #(not (= (-> % :attrs :required) "true")))) + (repeat nil))) + '(massage-params request))] (list 'valid-user-or-forbid (list @@ -86,8 +97,7 @@ 'do-or-server-fail (list (symbol (str "db/" (:name query))) - 'db/*db* - 'params) + 'db/*db* 'params) (case (:type query) :insert-1 201 ;; created :delete-1 204 ;; no content @@ -96,10 +106,13 @@ 'params (set (map - #(keyword (:name (:attrs %))) + #(keyword (column-name %)) (case (:type query) - (:insert-1 :update-1) - (-> query :entity insertable-properties) + :insert-1 + (-> query :entity required-properties) + :update-1 (concat + (-> query :entity key-properties) + (-> query :entity required-properties)) (:select-1 :delete-1) (-> query :entity key-properties) ;; default From 03e64464a5d4be5a214bb02ca259018ec765566b Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Wed, 19 Sep 2018 14:30:55 +0100 Subject: [PATCH 3/4] Getting some property names wrong: probable fix --- src/adl/to_selmer_routes.clj | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/adl/to_selmer_routes.clj b/src/adl/to_selmer_routes.clj index 7779a43..33f76af 100644 --- a/src/adl/to_selmer_routes.clj +++ b/src/adl/to_selmer_routes.clj @@ -77,7 +77,7 @@ 'if (list 'all-keys-present? - 'params (set (map #(safe-name % :sql) (key-names e true)))) + 'params (set (map #(keyword (safe-name % :sql)) (key-names e true)))) (list 'support/do-or-log-error (list @@ -288,13 +288,16 @@ (vector 'request) (list 'let (vector 'params - (list 'support/massage-params 'request)) + (list + 'merge + (property-defaults e) + (list 'support/massage-params 'request))) (list 'l/render (list 'support/resolve-template (str (path-part f e a) ".html")) (list 'merge {:title (capitalise (:name (:attrs f))) - :params (list 'merge (property-defaults e) 'params)} + :params 'params} (case (:tag f) :form (make-form-get-handler-content f e a n) :page (make-page-get-handler-content f e a n) From 8facb67bc9c138a06de75b713418643d6f56ef4c Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Wed, 19 Sep 2018 14:30:55 +0100 Subject: [PATCH 4/4] Getting some property names wrong: probable fix --- src/adl/to_selmer_routes.clj | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/adl/to_selmer_routes.clj b/src/adl/to_selmer_routes.clj index 7779a43..33f76af 100644 --- a/src/adl/to_selmer_routes.clj +++ b/src/adl/to_selmer_routes.clj @@ -77,7 +77,7 @@ 'if (list 'all-keys-present? - 'params (set (map #(safe-name % :sql) (key-names e true)))) + 'params (set (map #(keyword (safe-name % :sql)) (key-names e true)))) (list 'support/do-or-log-error (list @@ -288,13 +288,16 @@ (vector 'request) (list 'let (vector 'params - (list 'support/massage-params 'request)) + (list + 'merge + (property-defaults e) + (list 'support/massage-params 'request))) (list 'l/render (list 'support/resolve-template (str (path-part f e a) ".html")) (list 'merge {:title (capitalise (:name (:attrs f))) - :params (list 'merge (property-defaults e) 'params)} + :params 'params} (case (:tag f) :form (make-form-get-handler-content f e a n) :page (make-page-get-handler-content f e a n)