From 08032255828e8e4dc2209f9694ab37ab4a83b2a0 Mon Sep 17 00:00:00 2001 From: Niels van Klaveren Date: Tue, 19 Aug 2014 11:01:47 +0200 Subject: [PATCH] Added DELETE clause that takes a FROM clause Makes T-SQL join deletes possible --- src/honeysql/format.clj | 6 +++++- src/honeysql/helpers.clj | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/honeysql/format.clj b/src/honeysql/format.clj index b42b020..bd64848 100644 --- a/src/honeysql/format.clj +++ b/src/honeysql/format.clj @@ -174,6 +174,7 @@ :select 50 :insert-into 60 :update 70 + :delete 75 :delete-from 80 :columns 90 :set 100 @@ -455,7 +456,10 @@ (defmethod format-clause :delete-from [[_ table] _] (str "DELETE FROM " (to-sql table))) - + +(defmethod format-clause :delete [[_ table] _] + (str "DELETE " (to-sql table))) + (defn cte->sql [[cte-name query]] (str (to-sql cte-name) " AS " (to-sql query))) diff --git a/src/honeysql/helpers.clj b/src/honeysql/helpers.clj index e94eae6..9b05d7e 100644 --- a/src/honeysql/helpers.clj +++ b/src/honeysql/helpers.clj @@ -219,6 +219,13 @@ (defn delete-from ([table] (delete-from nil table)) ([m table] (build-clause :delete-from m table))) + +(defmethod build-clause :delete [_ m table] + (assoc m :delete table)) + +(defn delete + ([table] (delete nil table)) + ([m table] (build-clause :delete m table))) (defmethod build-clause :with [_ m ctes] (assoc m :with ctes))