pull out a couple helpers for param logic

This commit is contained in:
Mike Blume 2015-03-26 22:17:29 -07:00
parent a48ea1c4d2
commit a996b93dd3

View file

@ -247,6 +247,17 @@
(into [sql-str] @*params*) (into [sql-str] @*params*)
[sql-str])))) [sql-str]))))
(defn add-param [pname pval]
(swap! *param-names* conj pname)
(swap! *params* conj pval)
(*parameterizer*))
;; Anonymous param name -- :_1, :_2, etc.
(defn add-anon-param [pval]
(add-param
(keyword (str "_" (swap! *param-counter* inc)))
pval))
(defprotocol ToSql (defprotocol ToSql
(-to-sql [x])) (-to-sql [x]))
@ -305,18 +316,14 @@
(-to-sql [x] "NULL") (-to-sql [x] "NULL")
Object Object
(-to-sql [x] (-to-sql [x]
(let [[x pname] (if (instance? SqlParam x) (if (instance? SqlParam x)
(let [pname (param-name x)] (let [pname (param-name x)]
(if (map? @*input-params*) (if (map? @*input-params*)
[(get @*input-params* pname) pname] (add-param pname (get @*input-params* pname))
(let [x (first @*input-params*)] (let [x (first @*input-params*)]
(swap! *input-params* rest) (swap! *input-params* rest)
[x pname]))) (add-param pname x))))
;; Anonymous param name -- :_1, :_2, etc. (add-anon-param x))))
[x (keyword (str "_" (swap! *param-counter* inc)))])]
(swap! *param-names* conj pname)
(swap! *params* conj x)
(*parameterizer*))))
(defn sqlable? [x] (defn sqlable? [x]
(satisfies? ToSql x)) (satisfies? ToSql x))