add returning clause
This commit is contained in:
parent
f410aed5a1
commit
cb259fdc90
2 changed files with 13 additions and 2 deletions
|
|
@ -189,6 +189,7 @@
|
|||
:limit 200
|
||||
:offset 210
|
||||
:values 220
|
||||
:returning 225
|
||||
:query-values 230})
|
||||
|
||||
(def clause-store (atom default-clause-priorities))
|
||||
|
|
@ -366,14 +367,20 @@
|
|||
(defmethod format-clause :default [& _]
|
||||
"")
|
||||
|
||||
(defmethod format-clause :select [[_ fields] sql-map]
|
||||
(str "SELECT "
|
||||
(defn- select-fields [keyword fields sql-map]
|
||||
(str keyword " "
|
||||
(when (:modifiers sql-map)
|
||||
(str (space-join (map (comp string/upper-case name)
|
||||
(:modifiers sql-map)))
|
||||
" "))
|
||||
(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] _]
|
||||
(str "FROM " (comma-join (map to-sql tables))))
|
||||
|
||||
|
|
|
|||
|
|
@ -33,3 +33,7 @@
|
|||
"INSERT INTO foo SELECT bar FROM baz"))
|
||||
(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")))
|
||||
|
||||
(deftest returning
|
||||
(is (= (format-clause (first {:returning [:*]}) nil)
|
||||
"RETURNING *")))
|
||||
|
|
|
|||
Loading…
Reference in a new issue