From b6d6d2c4f41e2237aa27cc610002c71176db413c Mon Sep 17 00:00:00 2001 From: Sean Corfield Date: Sun, 20 Sep 2020 21:33:04 -0700 Subject: [PATCH] Refactor to sql-format for now --- src/honey/sql.cljc | 32 ++++++++++++++++++-------------- test/honey/sql_test.cljc | 4 ++-- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/honey/sql.cljc b/src/honey/sql.cljc index 80c039f..84a45e6 100644 --- a/src/honey/sql.cljc +++ b/src/honey/sql.cljc @@ -227,15 +227,19 @@ :else ["?" x])) +(defn- sql-format + "Format the data into SQL + params according to the options." + [data opts] + (let [dialect (get dialects (get opts :dialect :ansi))] + (binding [*dialect* dialect + *quoted* (if (contains? opts :quoted) (:quoted opts) true)] + (format-dsl data)))) + (defn format "Turn the data DSL into a vector containing a SQL string followed by any parameter values that were encountered in the DSL structure." - ([data] (format data {})) - ([data opts] - (let [dialect (get dialects (get opts :dialect :ansi))] - (binding [*dialect* dialect - *quoted* (if (contains? opts :quoted) (:quoted opts) true)] - (format-dsl data))))) + ([data] (sql-format data {})) + ([data opts] (sql-format data opts))) (defn set-dialect! "Set the default dialect for formatting. @@ -254,13 +258,13 @@ (format-expr 1) (format-where :where [:= :id 1]) (format-dsl {:select [:*] :from [:table] :where [:= :id 1]}) - (format {:select [:t.*] :from [[:table :t]] :where [:= :id 1]}) - (format {:select [:*] :from [:table] :group-by [:foo :bar]}) - (format {:select [:*] :from [:table] :group-by [[:date :bar]]}) - (format {:select [:*] :from [:table] :order-by [[:foo :desc] :bar]}) - (format {:select [:*] :from [:table] :order-by [[[:date :expiry] :desc] :bar]}) - (format {:select [:*] :from [:table] :where [:< [:date_add :expiry [:interval 30 :days]] [:now]]}) + (sql-format {:select [:t.*] :from [[:table :t]] :where [:= :id 1]} {}) + (sql-format {:select [:*] :from [:table] :group-by [:foo :bar]} {}) + (sql-format {:select [:*] :from [:table] :group-by [[:date :bar]]} {}) + (sql-format {:select [:*] :from [:table] :order-by [[:foo :desc] :bar]} {}) + (sql-format {:select [:*] :from [:table] :order-by [[[:date :expiry] :desc] :bar]} {}) + (sql-format {:select [:*] :from [:table] :where [:< [:date_add :expiry [:interval 30 :days]] [:now]]} {}) (format-expr [:interval 30 :days]) - (format {:select [:*] :from [:table] :where [:= :id 1]} {:dialect :mysql}) - (format {:select [:*] :from [:table] :where [:in :id [1 2 3 4]]}) + (sql-format {:select [:*] :from [:table] :where [:= :id 1]} {:dialect :mysql}) + (sql-format {:select [:*] :from [:table] :where [:in :id [1 2 3 4]]} {}) ,) diff --git a/test/honey/sql_test.cljc b/test/honey/sql_test.cljc index d33f0da..ba50ab0 100644 --- a/test/honey/sql_test.cljc +++ b/test/honey/sql_test.cljc @@ -7,5 +7,5 @@ (deftest mysql-tests (is (= ["SELECT * FROM `table` WHERE `id` = ?" 1] - (sut/format {:select [:*] :from [:table] :where [:= :id 1]} - {:dialect :mysql})))) + (#'sut/sql-format {:select [:*] :from [:table] :where [:= :id 1]} + {:dialect :mysql}))))