Fix where merging; fix single-arg helpers

This commit is contained in:
Sean Corfield 2020-10-09 23:59:30 -07:00
parent d04d9f600a
commit 9da83b5e1b

View file

@ -10,13 +10,14 @@
(defn- and-merge (defn- and-merge
[current args] [current args]
(let [merged (default-merge current args)] (cond (= :and (first current))
(cond (= 1 (count merged)) (default-merge current args)
(vec (first merged)) (seq current)
(= :and (first merged)) (default-merge [:and current] args)
merged (= 1 (count args))
(vec (first args))
:else :else
(into [:and] merged)))) (default-merge [:and] args)))
(def ^:private special-merges (def ^:private special-merges
{:where #'and-merge {:where #'and-merge
@ -33,7 +34,7 @@
(helper-merge {} k args))) (helper-merge {} k args)))
(defn- generic-1 [k [data arg]] (defn- generic-1 [k [data arg]]
(if (map? data) (if arg
(assoc data k arg) (assoc data k arg)
(assoc {} k data))) (assoc {} k data)))
@ -49,12 +50,12 @@
(defn select-distinct [& args] (generic :select-distinct args)) (defn select-distinct [& args] (generic :select-distinct args))
(defn insert-into [& args] (generic :insert-into args)) (defn insert-into [& args] (generic :insert-into args))
(defn update [& args] (generic :update args)) (defn update [& args] (generic :update args))
(defn delete [& args] (generic :delete args)) (defn delete [& args] (generic-1 :delete args))
(defn delete-from [& args] (generic :delete-from args)) (defn delete-from [& args] (generic :delete-from args))
(defn truncate [& args] (generic :truncate args)) (defn truncate [& args] (generic :truncate args))
(defn columns [& args] (generic :columns args)) (defn columns [& args] (generic :columns args))
(defn composite [& args] (generic :composite args)) (defn composite [& args] (generic :composite args))
(defn set [& args] (generic :set args)) (defn set [& args] (generic-1 :set args))
(defn from [& args] (generic :from args)) (defn from [& args] (generic :from args))
(defn join [& args] (generic :join args)) (defn join [& args] (generic :join args))
(defn left-join [& args] (generic :left-join args)) (defn left-join [& args] (generic :left-join args))
@ -69,8 +70,8 @@
(defn order-by [& args] (generic :order-by args)) (defn order-by [& args] (generic :order-by args))
(defn limit [& args] (generic-1 :limit args)) (defn limit [& args] (generic-1 :limit args))
(defn offset [& args] (generic-1 :offset args)) (defn offset [& args] (generic-1 :offset args))
(defn for [& args] (generic :for args)) (defn for [& args] (generic-1 :for args))
(defn values [& args] (generic :values args)) (defn values [& args] (generic-1 :values args))
(defn on-conflict [& args] (generic :on-conflict args)) (defn on-conflict [& args] (generic :on-conflict args))
(defn on-constraint [& args] (generic :on-constraint args)) (defn on-constraint [& args] (generic :on-constraint args))
(defn do-nothing [& args] (generic :do-nothing args)) (defn do-nothing [& args] (generic :do-nothing args))