From f489eda4d028055e3ce0be7fca7aacb8f2834084 Mon Sep 17 00:00:00 2001 From: Dave Della Costa Date: Wed, 5 Mar 2014 21:16:05 +0900 Subject: [PATCH] Fixes formatting for values, adds tests. --- src/honeysql/format.clj | 14 ++++++++------ test/honeysql/core_test.clj | 7 +++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/honeysql/format.clj b/src/honeysql/format.clj index 004a640..d43303b 100644 --- a/src/honeysql/format.clj +++ b/src/honeysql/format.clj @@ -366,13 +366,15 @@ (str "(" (comma-join (map to-sql fields)) ")")) (defmethod format-clause :values [[_ values] _] - (if (sequential? (first values)) - (str "VALUES " (comma-join (for [x values] - (str "(" (comma-join (map to-sql x)) ")")))) + (if (map? values) (str - "(" (comma-join (map to-sql (keys (first values)))) ") VALUES " - (comma-join (for [x values] - (str "(" (comma-join (map to-sql (vals x))) ")")))))) + "(" (comma-join (map to-sql (keys values))) ") " + "VALUES " + (str "(" (comma-join (map to-sql (vals values))) ")")) + (->> values + (reduce #(conj %1 (str "(" (comma-join (map to-sql %2)) ")")) []) + comma-join + (str "VALUES ")))) (defmethod format-clause :query-values [[_ query-values] _] (to-sql query-values)) diff --git a/test/honeysql/core_test.clj b/test/honeysql/core_test.clj index 161b52f..d79e1e4 100644 --- a/test/honeysql/core_test.clj +++ b/test/honeysql/core_test.clj @@ -55,3 +55,10 @@ "bort" "gabba" 2]))) (testing "SQL data prints and reads correctly" (is (= m1 (read-string (pr-str m1))))))) + +(deftest can-format-values-properly + (is (= ["VALUES (?, ?), (?, ?)" "foo1" "bar1" "foo2" "bar2"] + (sql/format (values [["foo1" "bar1"] ["foo2" "bar2"]])))) + + (is (= ["(foo, bar) VALUES (?, ?)" "foo" "bar"] + (sql/format (values {:foo "foo" :bar "bar"})))))