handle SqlParam explicitly

This commit is contained in:
Mike Blume 2015-03-03 18:51:57 -08:00
parent f63de95e14
commit 415bbce6b3

View file

@ -245,6 +245,16 @@
(apply fn-handler fn-name (.args x))))) (apply fn-handler fn-name (.args x)))))
SqlRaw SqlRaw
(-to-sql [x] (.s x)) (-to-sql [x] (.s x))
SqlParam
(-to-sql [x] (let [pname (param-name x)
x (if (map? @*input-params*)
(get @*input-params* pname)
(let [x (first @*input-params*)]
(swap! *input-params* rest)
x))]
(swap! *param-names* conj pname)
(swap! *params* conj x)
"?"))
clojure.lang.IPersistentMap clojure.lang.IPersistentMap
(-to-sql [x] (let [clause-ops (concat (-to-sql [x] (let [clause-ops (concat
(filter #(contains? x %) clause-order) (filter #(contains? x %) clause-order)
@ -260,15 +270,8 @@
nil nil
(-to-sql [x] "NULL") (-to-sql [x] "NULL")
Object Object
(-to-sql [x] (let [[x pname] (if (instance? SqlParam x)
(let [pname (param-name x)]
(if (map? @*input-params*)
[(get @*input-params* pname) pname]
(let [x (first @*input-params*)]
(swap! *input-params* rest)
[x pname])))
;; Anonymous param name -- :_1, :_2, etc. ;; Anonymous param name -- :_1, :_2, etc.
[x (keyword (str "_" (swap! *param-counter* inc)))])] (-to-sql [x] (let [pname (keyword (str "_" (swap! *param-counter* inc)))]
(swap! *param-names* conj pname) (swap! *param-names* conj pname)
(swap! *params* conj x) (swap! *params* conj x)
"?"))) "?")))