just call it to-sql
This commit is contained in:
parent
cb296e2e31
commit
38e3812e66
1 changed files with 20 additions and 23 deletions
|
|
@ -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]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue