Fixes formatting for values, adds tests.

This commit is contained in:
Dave Della Costa 2014-03-05 21:16:05 +09:00
parent 88bc556578
commit f489eda4d0
2 changed files with 15 additions and 6 deletions

View file

@ -366,13 +366,15 @@
(str "(" (comma-join (map to-sql fields)) ")")) (str "(" (comma-join (map to-sql fields)) ")"))
(defmethod format-clause :values [[_ values] _] (defmethod format-clause :values [[_ values] _]
(if (sequential? (first values)) (if (map? values)
(str "VALUES " (comma-join (for [x values]
(str "(" (comma-join (map to-sql x)) ")"))))
(str (str
"(" (comma-join (map to-sql (keys (first values)))) ") VALUES " "(" (comma-join (map to-sql (keys values))) ") "
(comma-join (for [x values] "VALUES "
(str "(" (comma-join (map to-sql (vals x))) ")")))))) (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] _] (defmethod format-clause :query-values [[_ query-values] _]
(to-sql query-values)) (to-sql query-values))

View file

@ -55,3 +55,10 @@
"bort" "gabba" 2]))) "bort" "gabba" 2])))
(testing "SQL data prints and reads correctly" (testing "SQL data prints and reads correctly"
(is (= m1 (read-string (pr-str m1))))))) (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"})))))