Merge f6c79a76fb into 63d04cf8fc
This commit is contained in:
commit
3d2f5bb2e2
2 changed files with 18 additions and 0 deletions
|
|
@ -41,6 +41,9 @@
|
||||||
(defn collify [x]
|
(defn collify [x]
|
||||||
(if (coll? x) x [x]))
|
(if (coll? x) x [x]))
|
||||||
|
|
||||||
|
(defhelper with [m ctes]
|
||||||
|
(assoc m :with (collify ctes)))
|
||||||
|
|
||||||
(defhelper select [m fields]
|
(defhelper select [m fields]
|
||||||
(assoc m :select (collify fields)))
|
(assoc m :select (collify fields)))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,21 @@
|
||||||
(sql/format (assoc m1 :lock {:mode :update})
|
(sql/format (assoc m1 :lock {:mode :update})
|
||||||
{:param1 "gabba" :param2 2}))))))
|
{:param1 "gabba" :param2 2}))))))
|
||||||
|
|
||||||
|
(deftest test-with
|
||||||
|
(let [expected-sql (clojure.string/join " "
|
||||||
|
["WITH f AS (SELECT foo.* FROM foo),"
|
||||||
|
"b AS (SELECT bar.* FROM bar)"
|
||||||
|
"SELECT f.baz, b.quux"
|
||||||
|
"FROM f"
|
||||||
|
"INNER JOIN b ON f.id = b.id"])]
|
||||||
|
(is (= [expected-sql]
|
||||||
|
(-> (with [:f (-> (select :foo.* )(from :foo))]
|
||||||
|
[:b (-> (select :bar.* )(from :bar))])
|
||||||
|
(select :f.baz :b.quux)
|
||||||
|
(from :f)
|
||||||
|
(join :b [:= :f.id :b.id])
|
||||||
|
sql/format)))))
|
||||||
|
|
||||||
(deftest test-cast
|
(deftest test-cast
|
||||||
(is (= ["SELECT foo, CAST(bar AS integer)"]
|
(is (= ["SELECT foo, CAST(bar AS integer)"]
|
||||||
(sql/format {:select [:foo (sql/call :cast :bar :integer)]})))
|
(sql/format {:select [:foo (sql/call :cast :bar :integer)]})))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue