just call it to-sql

This commit is contained in:
Mike Blume 2015-06-14 13:15:14 -07:00
parent cb296e2e31
commit 38e3812e66

View file

@ -84,7 +84,10 @@
"not-like" "not like" "not-like" "not like"
"regex" "regexp"}) "regex" "regexp"})
(declare to-sql format-predicate*) (declare format-predicate*)
(defprotocol ToSql
(to-sql [x]))
(defmulti fn-handler (fn [op & args] op)) (defmulti fn-handler (fn [op & args] op))
@ -278,12 +281,9 @@
(keyword (str "_" (swap! *param-counter* inc))) (keyword (str "_" (swap! *param-counter* inc)))
pval)) pval))
(defprotocol ToSql
(-to-sql [x]))
(defrecord Value [v] (defrecord Value [v]
ToSql ToSql
(-to-sql [_] (to-sql [_]
(add-anon-param v))) (add-anon-param v)))
(defn value [x] (Value. x)) (defn value [x] (Value. x))
@ -292,7 +292,7 @@
(extend-protocol ToSql (extend-protocol ToSql
clojure.lang.Keyword clojure.lang.Keyword
(-to-sql [x] (to-sql [x]
(let [s (name x)] (let [s (name x)]
(case (.charAt s 0) (case (.charAt s 0)
\% (let [call-args (string/split (subs s 1) #"\." 2)] \% (let [call-args (string/split (subs s 1) #"\." 2)]
@ -300,14 +300,14 @@
\? (to-sql (param (keyword (subs s 1)))) \? (to-sql (param (keyword (subs s 1))))
(quote-identifier x)))) (quote-identifier x))))
clojure.lang.Symbol clojure.lang.Symbol
(-to-sql [x] (quote-identifier x)) (to-sql [x] (quote-identifier x))
java.lang.Number java.lang.Number
(-to-sql [x] (str x)) (to-sql [x] (str x))
java.lang.Boolean java.lang.Boolean
(-to-sql [x] (to-sql [x]
(if x "TRUE" "FALSE")) (if x "TRUE" "FALSE"))
clojure.lang.Sequential clojure.lang.Sequential
(-to-sql [x] (to-sql [x]
(if *fn-context?* (if *fn-context?*
;; list argument in fn call ;; list argument in fn call
(paren-wrap (comma-join (map to-sql x))) (paren-wrap (comma-join (map to-sql x)))
@ -321,15 +321,15 @@
(quote-identifier (second x)) (quote-identifier (second x))
(to-sql (second x)))))) (to-sql (second x))))))
SqlCall SqlCall
(-to-sql [x] (to-sql [x]
(binding [*fn-context?* true] (binding [*fn-context?* true]
(let [fn-name (name (.-name x)) (let [fn-name (name (.-name x))
fn-name (fn-aliases fn-name fn-name)] fn-name (fn-aliases fn-name fn-name)]
(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))
clojure.lang.IPersistentMap clojure.lang.IPersistentMap
(-to-sql [x] (to-sql [x]
(let [clause-ops (sort-clauses (keys x)) (let [clause-ops (sort-clauses (keys x))
sql-str (binding [*subquery?* true sql-str (binding [*subquery?* true
*fn-context?* false] *fn-context?* false]
@ -340,12 +340,12 @@
(paren-wrap sql-str) (paren-wrap sql-str)
sql-str))) sql-str)))
clojure.lang.IPersistentSet clojure.lang.IPersistentSet
(-to-sql [x] (to-sql [x]
(-to-sql (seq x))) (to-sql (seq x)))
nil nil
(-to-sql [x] "NULL") (to-sql [x] "NULL")
SqlParam SqlParam
(-to-sql [x] (to-sql [x]
(let [pname (param-name x)] (let [pname (param-name x)]
(if (map? @*input-params*) (if (map? @*input-params*)
(add-param pname (get @*input-params* pname)) (add-param pname (get @*input-params* pname))
@ -353,18 +353,15 @@
(swap! *input-params* rest) (swap! *input-params* rest)
(add-param pname x))))) (add-param pname x)))))
SqlArray SqlArray
(-to-sql [x] (to-sql [x]
(str "ARRAY[" (comma-join (map -to-sql (.-values x))) "]")) (str "ARRAY[" (comma-join (map to-sql (.-values x))) "]"))
Object Object
(-to-sql [x] (to-sql [x]
(add-anon-param x))) (add-anon-param x)))
(defn sqlable? [x] (defn sqlable? [x]
(satisfies? ToSql x)) (satisfies? ToSql x))
(defn to-sql [x]
(-to-sql x))
;;;; ;;;;
(defn format-predicate* [pred] (defn format-predicate* [pred]