Implement array as SQL syntax instead of special HoneySQL syntax
This commit is contained in:
parent
4408a6e7d2
commit
97531fa4cf
2 changed files with 25 additions and 24 deletions
|
|
@ -402,7 +402,11 @@
|
||||||
(->> (into #{} (map keyword)))))
|
(->> (into #{} (map keyword)))))
|
||||||
|
|
||||||
(def ^:private special-syntax
|
(def ^:private special-syntax
|
||||||
{:between
|
{:array
|
||||||
|
(fn [[arr]]
|
||||||
|
(let [[sqls params] (format-expr-list arr)]
|
||||||
|
(into [(str "ARRAY[" (str/join ", " sqls) "]")] params)))
|
||||||
|
:between
|
||||||
(fn [[x a b]]
|
(fn [[x a b]]
|
||||||
(let [[sql-x & params-x] (format-expr x {:nested? true})
|
(let [[sql-x & params-x] (format-expr x {:nested? true})
|
||||||
[sql-a & params-a] (format-expr a {:nested? true})
|
[sql-a & params-a] (format-expr a {:nested? true})
|
||||||
|
|
|
||||||
|
|
@ -13,19 +13,19 @@
|
||||||
|
|
||||||
(deftest expr-tests
|
(deftest expr-tests
|
||||||
(is (= ["id = ?" 1]
|
(is (= ["id = ?" 1]
|
||||||
(#'sut/format-expr [:= :id 1])))
|
(sut/format-expr [:= :id 1])))
|
||||||
(is (= ["id + ?" 1]
|
(is (= ["id + ?" 1]
|
||||||
(#'sut/format-expr [:+ :id 1])))
|
(sut/format-expr [:+ :id 1])))
|
||||||
(is (= ["? + (? + quux)" 1 1]
|
(is (= ["? + (? + quux)" 1 1]
|
||||||
(#'sut/format-expr [:+ 1 [:+ 1 :quux]])))
|
(sut/format-expr [:+ 1 [:+ 1 :quux]])))
|
||||||
(is (= ["FOO(BAR(? + G(abc)), F(?, quux))" 2 1]
|
(is (= ["FOO(BAR(? + G(abc)), F(?, quux))" 2 1]
|
||||||
(#'sut/format-expr [:foo [:bar [:+ 2 [:g :abc]]] [:f 1 :quux]])))
|
(sut/format-expr [:foo [:bar [:+ 2 [:g :abc]]] [:f 1 :quux]])))
|
||||||
(is (= ["id"]
|
(is (= ["id"]
|
||||||
(#'sut/format-expr :id)))
|
(sut/format-expr :id)))
|
||||||
(is (= ["?" 1]
|
(is (= ["?" 1]
|
||||||
(#'sut/format-expr 1)))
|
(sut/format-expr 1)))
|
||||||
(is (= ["INTERVAL ? DAYS" 30]
|
(is (= ["INTERVAL ? DAYS" 30]
|
||||||
(#'sut/format-expr [:interval 30 :days]))))
|
(sut/format-expr [:interval 30 :days]))))
|
||||||
|
|
||||||
(deftest where-test
|
(deftest where-test
|
||||||
(is (= ["WHERE id = ?" 1]
|
(is (= ["WHERE id = ?" 1]
|
||||||
|
|
@ -119,15 +119,13 @@
|
||||||
["SELECT id FROM foo WHERE EXISTS (SELECT ? FROM bar WHERE deleted)" 1])))
|
["SELECT id FROM foo WHERE EXISTS (SELECT ? FROM bar WHERE deleted)" 1])))
|
||||||
|
|
||||||
(deftest array-test
|
(deftest array-test
|
||||||
(is nil "sql-array unimplemented")
|
(is (= (format {:insert-into :foo
|
||||||
#_(is (= (format {:insert-into :foo
|
|
||||||
:columns [:baz]
|
:columns [:baz]
|
||||||
:values [[(sql/array [1 2 3 4])]]})
|
:values [[[:array [1 2 3 4]]]]})
|
||||||
["INSERT INTO foo (baz) VALUES (ARRAY[?, ?, ?, ?])" 1 2 3 4]))
|
["INSERT INTO foo (baz) VALUES (ARRAY[?, ?, ?, ?])" 1 2 3 4]))
|
||||||
(is nil "sql-array unimplemented")
|
(is (= (format {:insert-into :foo
|
||||||
#_(is (= (format {:insert-into :foo
|
|
||||||
:columns [:baz]
|
:columns [:baz]
|
||||||
:values [[(sql/array ["one" "two" "three"])]]})
|
:values [[[:array ["one" "two" "three"]]]]})
|
||||||
["INSERT INTO foo (baz) VALUES (ARRAY[?, ?, ?])" "one" "two" "three"])))
|
["INSERT INTO foo (baz) VALUES (ARRAY[?, ?, ?])" "one" "two" "three"])))
|
||||||
|
|
||||||
(deftest union-test
|
(deftest union-test
|
||||||
|
|
@ -216,10 +214,9 @@
|
||||||
|
|
||||||
(deftest parameterizer-none
|
(deftest parameterizer-none
|
||||||
(testing "array parameter"
|
(testing "array parameter"
|
||||||
(is nil "sql-array unimplemented")
|
(is (= (format {:insert-into :foo
|
||||||
#_(is (= (format {:insert-into :foo
|
|
||||||
:columns [:baz]
|
:columns [:baz]
|
||||||
:values [[(sql/array [1 2 3 4])]]}
|
:values [[[:array [1 2 3 4]]]]}
|
||||||
{:parameterizer :none})
|
{:parameterizer :none})
|
||||||
["INSERT INTO foo (baz) VALUES (ARRAY[1, 2, 3, 4])"])))
|
["INSERT INTO foo (baz) VALUES (ARRAY[1, 2, 3, 4])"])))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue