Miscellaneous improvements

This commit is contained in:
Oleksandr Yakushev 2024-09-27 12:57:44 +03:00
parent 18a511b1c9
commit 4c75db9a95

View file

@ -691,7 +691,9 @@
* [:overlay :foo :*placing :?subs :*from 3 :*for 4] * [:overlay :foo :*placing :?subs :*from 3 :*for 4]
* [:trim :*leading-from :bar]" * [:trim :*leading-from :bar]"
[args & [opts]] [args & [opts]]
(loop [exprs (map #(format-expr % opts) (remove inline-kw? args)) (loop [exprs (keep #(when-not (inline-kw? %)
(format-expr % opts))
args)
args args args args
prev-in false prev-in false
result []] result []]
@ -933,29 +935,33 @@
(defn- format-join [k clauses] (defn- format-join [k clauses]
(let [[sqls params] (let [[sqls params]
(reduce (fn [[sqls params] [j e]] (transduce
(let [[sql-j & params-j] (partition-all 2)
(format-selects-common (fn
(sql-kw (if (= :join k) :inner-join k)) ([res] res)
true ([[sqls params] [j e]]
[j]) (let [[sql-j & params-j]
sqls (conj sqls sql-j)] (format-selects-common
(if (and (sequential? e) (= :using (first e))) (sql-kw (if (= :join k) :inner-join k))
(let [[u-sqls u-params] true
(reduce-sql (map #'format-entity-alias (rest e)))] [j])
[(conj sqls sqls (conj sqls sql-j)]
"USING" (if (and (sequential? e) (= :using (first e)))
(str "(" (let [[u-sqls u-params]
(join ", " u-sqls) (reduce-sql (map #'format-entity-alias) (rest e))]
")")) [(conj sqls
(-> params (into params-j) (into u-params))]) "USING"
(let [[sql & params'] (when e (format-expr e))] (str "("
[(cond-> sqls e (conj "ON" sql)) (join ", " u-sqls)
(-> params ")"))
(into params-j) (-> params (into params-j) (into u-params))])
(into params'))])))) (let [[sql & params'] (when e (format-expr e))]
[[] []] [(cond-> sqls e (conj "ON" sql))
(partition-all 2 clauses))] (-> params
(into params-j)
(into params'))])))))
[[] []]
clauses)]
(into [(join " " sqls)] params))) (into [(join " " sqls)] params)))
(def ^:private join-by-aliases (def ^:private join-by-aliases
@ -1969,7 +1975,7 @@
(defn- format-infix-expr [op' op expr nested] (defn- format-infix-expr [op' op expr nested]
(let [args (cond->> (rest expr) (let [args (cond->> (rest expr)
(contains? @op-ignore-nil op) (contains? @op-ignore-nil op)
(remove nil?)) (filterv some?))
args (cond (seq args) args (cond (seq args)
args args
(= :and op) (= :and op)