diff --git a/src/honey/sql.cljc b/src/honey/sql.cljc index d9a52a2..0971799 100644 --- a/src/honey/sql.cljc +++ b/src/honey/sql.cljc @@ -18,7 +18,7 @@ "The (default) order for known clauses. Can have items added and removed." [:nest :with :with-recursive :intersect :union :union-all :except :except-all :select :select-distinct :insert-into :update :delete :delete-from :truncate - :columns :set :from + :columns :set :from :using :join :left-join :right-join :inner-join :outer-join :full-join :cross-join :where :group-by :having :order-by :limit :offset :for :values @@ -401,6 +401,7 @@ :columns #'format-columns :set #'format-set-exprs :from #'format-selects + :using #'format-selects :join #'format-join :left-join #'format-join :right-join #'format-join diff --git a/src/honey/sql/helpers.cljc b/src/honey/sql/helpers.cljc index f0ea26c..bb429a1 100644 --- a/src/honey/sql/helpers.cljc +++ b/src/honey/sql/helpers.cljc @@ -61,6 +61,7 @@ (defn columns [& args] (generic :columns args)) (defn set [& args] (generic-1 :set args)) (defn from [& args] (generic :from args)) +(defn using [& args] (generic :using args)) (defn join [& args] (generic :join args)) (defn left-join [& args] (generic :left-join args)) (defn right-join [& args] (generic :right-join args)) diff --git a/test/honey/sql_test.cljc b/test/honey/sql_test.cljc index 36f63ba..de5706d 100644 --- a/test/honey/sql_test.cljc +++ b/test/honey/sql_test.cljc @@ -354,6 +354,15 @@ :where [:= :t1.bar 42]} (format {:dialect :mysql}))))) +(deftest delete-using + (is (= ["DELETE FROM films USING producers WHERE (producer_id = producers.id) AND (producers.name = ?)" "foo"] + (-> {:delete-from :films + :using [:producers] + :where [:and + [:= :producer_id :producers.id] + [:= :producers.name "foo"]]} + (format))))) + (deftest truncate-test (is (= ["TRUNCATE `foo`"] (-> {:truncate :foo}