add returning clause

This commit is contained in:
niquola 2015-11-09 22:18:56 +00:00
parent f410aed5a1
commit cb259fdc90
2 changed files with 13 additions and 2 deletions

View file

@ -189,6 +189,7 @@
:limit 200 :limit 200
:offset 210 :offset 210
:values 220 :values 220
:returning 225
:query-values 230}) :query-values 230})
(def clause-store (atom default-clause-priorities)) (def clause-store (atom default-clause-priorities))
@ -366,14 +367,20 @@
(defmethod format-clause :default [& _] (defmethod format-clause :default [& _]
"") "")
(defmethod format-clause :select [[_ fields] sql-map] (defn- select-fields [keyword fields sql-map]
(str "SELECT " (str keyword " "
(when (:modifiers sql-map) (when (:modifiers sql-map)
(str (space-join (map (comp string/upper-case name) (str (space-join (map (comp string/upper-case name)
(:modifiers sql-map))) (:modifiers sql-map)))
" ")) " "))
(comma-join (map to-sql fields)))) (comma-join (map to-sql fields))))
(defmethod format-clause :select [[_ fields] sql-map]
(select-fields "SELECT" fields sql-map))
(defmethod format-clause :returning [[_ fields] sql-map]
(select-fields "RETURNING" fields sql-map))
(defmethod format-clause :from [[_ tables] _] (defmethod format-clause :from [[_ tables] _]
(str "FROM " (comma-join (map to-sql tables)))) (str "FROM " (comma-join (map to-sql tables))))

View file

@ -33,3 +33,7 @@
"INSERT INTO foo SELECT bar FROM baz")) "INSERT INTO foo SELECT bar FROM baz"))
(is (= (format-clause (first {:insert-into [[:foo [:a :b :c]] {:select [:d :e :f] :from [:baz]}]}) nil) (is (= (format-clause (first {:insert-into [[:foo [:a :b :c]] {:select [:d :e :f] :from [:baz]}]}) nil)
"INSERT INTO foo (a, b, c) SELECT d, e, f FROM baz"))) "INSERT INTO foo (a, b, c) SELECT d, e, f FROM baz")))
(deftest returning
(is (= (format-clause (first {:returning [:*]}) nil)
"RETURNING *")))