diff --git a/src/adl/to_hugsql_queries.clj b/src/adl/to_hugsql_queries.clj index 4a983ab..a79f174 100644 --- a/src/adl/to_hugsql_queries.clj +++ b/src/adl/to_hugsql_queries.clj @@ -165,31 +165,33 @@ pretty-name " records having any string field matching the parameter of the same name by substring match") (str "SELECT * FROM lv_" entity-name) - "WHERE " (s/join - "\n\tOR " - (filter - string? - (map - #(case (:type (:attrs %)) - ("string" "text") - (str - (safe-name (-> % :attrs :name) :sql) - " LIKE '%params." - (-> % :attrs :name) "%'") - ("date" "time" "timestamp") - (str - (safe-name (-> % :attrs :name) :sql) - " = 'params." - (-> % :attrs :name) "'") - (str - (safe-name (-> % :attrs :name) :sql) - " = params." - (-> % :attrs :name))) - properties))) - (order-by-clause entity "lv_") - "--~ (if (:offset params) \"OFFSET :offset \")" - "--~ (if (:limit params) \"LIMIT :limit\" \"LIMIT 100\")")))}))) + "\n\t--~ " + (cons + "WHERE false" + (filter + string? + (map + #(str + "(if (:" (-> % :attrs :name) " params) \"OR " + (case (:type (:attrs %)) + ("string" "text" "defined") ;; TODO: 'defined' types may be string or number - more work here + (str + (safe-name (-> % :attrs :name) :sql) + " LIKE '%:" (-> % :attrs :name) "%'") + ("date" "time" "timestamp") + (str + (safe-name (-> % :attrs :name) :sql) + " = ':" (-> % :attrs :name) "'") + (str + (safe-name (-> % :attrs :name) :sql) + " = :" + (-> % :attrs :name))) + "\")") + properties)))) + (order-by-clause entity "lv_") + "--~ (if (:offset params) \"OFFSET :offset \")" + "--~ (if (:limit params) \"LIMIT :limit\" \"LIMIT 100\")")))}))) (defn select-query diff --git a/src/adl/to_selmer_routes.clj b/src/adl/to_selmer_routes.clj index fa2158d..acaa24f 100644 --- a/src/adl/to_selmer_routes.clj +++ b/src/adl/to_selmer_routes.clj @@ -69,10 +69,7 @@ (vector 'r) (list 'let (vector 'p - (list - 'merge - (list 'support/query-string-to-map (list :query-string 'r)) - (list :params 'r))) + (list 'support/massage-params (list :params 'r))) ;; TODO: we must take key params out of just params, ;; but we should take all other params out of form-params - because we need the key to ;; load the form in the first place, but just accepting values of other params would @@ -194,7 +191,7 @@ (binding [*out* output] (pprint (file-header application)) (println) - (pprint '(defn admin + (pprint '(defn index [r] (l/render (support/resolve-template diff --git a/src/adl/to_selmer_templates.clj b/src/adl/to_selmer_templates.clj index 9c8a8df..c8d6d3e 100644 --- a/src/adl/to_selmer_templates.clj +++ b/src/adl/to_selmer_templates.clj @@ -318,7 +318,18 @@ {:id widget-name :name widget-name :type (widget-type property application typedef) - :value (str "{{record." widget-name "}}")} + :value (str "{{record." widget-name "}}") + :maxlength (:size (:attrs property)) + :size (cond + (nil? (:size (:attrs property))) + "16" + (try + (> (read-string + (:size (:attrs property))) 60) + (catch Exception _ false)) + "60" + true + (:size (:attrs property)))} (if (:minimum (:attrs typedef)) {:min (:minimum (:attrs typedef))})