Implement JOIN USING
This commit is contained in:
parent
d0f3068f3f
commit
d5b11e2da6
1 changed files with 12 additions and 6 deletions
|
|
@ -260,13 +260,19 @@
|
||||||
(defn- format-join [k clauses]
|
(defn- format-join [k clauses]
|
||||||
(let [[sqls params]
|
(let [[sqls params]
|
||||||
(reduce (fn [[sqls params] [j e]]
|
(reduce (fn [[sqls params] [j e]]
|
||||||
;; TODO: join using!
|
(let [sqls (conj sqls
|
||||||
(let [[sql & params'] (when e (format-expr e))]
|
|
||||||
[(cond-> (conj sqls
|
|
||||||
(sql-kw (if (= :join k) :inner-join k))
|
(sql-kw (if (= :join k) :inner-join k))
|
||||||
(format-entity-alias j))
|
(format-entity-alias j))]
|
||||||
e (conj "ON" sql))
|
(if (and (sequential? e) (= :using (first e)))
|
||||||
(into params params')]))
|
[(conj sqls
|
||||||
|
"USING"
|
||||||
|
(str "("
|
||||||
|
(str/join ", " (map #'format-entity-alias (rest e)))
|
||||||
|
")"))
|
||||||
|
params]
|
||||||
|
(let [[sql & params'] (when e (format-expr e))]
|
||||||
|
[(cond-> sqls e (conj "ON" sql))
|
||||||
|
(into params params')]))))
|
||||||
[[] []]
|
[[] []]
|
||||||
(partition 2 clauses))]
|
(partition 2 clauses))]
|
||||||
(into [(str/join " " sqls)] params)))
|
(into [(str/join " " sqls)] params)))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue