Implement JOIN USING

This commit is contained in:
Sean Corfield 2021-01-30 11:00:34 -08:00
parent d0f3068f3f
commit d5b11e2da6

View file

@ -260,13 +260,19 @@
(defn- format-join [k clauses]
(let [[sqls params]
(reduce (fn [[sqls params] [j e]]
;; TODO: join using!
(let [[sql & params'] (when e (format-expr e))]
[(cond-> (conj sqls
(let [sqls (conj sqls
(sql-kw (if (= :join k) :inner-join k))
(format-entity-alias j))
e (conj "ON" sql))
(into params params')]))
(format-entity-alias j))]
(if (and (sequential? e) (= :using (first e)))
[(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))]
(into [(str/join " " sqls)] params)))