From e45a58f267846c65bdaae1d35f4dc6370d33c5ab Mon Sep 17 00:00:00 2001 From: Justin Kramer Date: Fri, 24 Aug 2012 18:19:17 -0400 Subject: [PATCH] allow custom clauses --- src/honeysql/format.clj | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/honeysql/format.clj b/src/honeysql/format.clj index 8058945..8f599c2 100644 --- a/src/honeysql/format.clj +++ b/src/honeysql/format.clj @@ -116,6 +116,8 @@ "Determines the order that clauses will be placed within generated SQL" [:select :from :join :where :group-by :having :order-by :limit :offset]) +(def known-clauses (set clause-order)) + (defn format [sql-map] (binding [*params* (atom [])] (let [sql-str (to-sql sql-map)] @@ -162,7 +164,9 @@ SqlRaw (-to-sql [x] (.s x)) clojure.lang.IPersistentMap - (-to-sql [x] (let [clause-ops (filter #(contains? x %) clause-order) + (-to-sql [x] (let [clause-ops (concat + (filter #(contains? x %) clause-order) + (remove known-clauses (keys x))) sql-str (binding [*subquery?* true] (space-join (map (comp #(format-clause % x) #(find x %)) @@ -202,6 +206,9 @@ "Takes a map entry representing a clause and returns an SQL string" (fn [clause _] (key clause))) +(defmethod format-clause :default [& _] + "") + (defmethod format-clause :select [[_ fields] sql-map] (str "SELECT " (when (:modifiers sql-map)