add columns, merge-columns and query-values clauses
This commit is contained in:
parent
806b9bafd6
commit
e7fefe86a6
3 changed files with 28 additions and 6 deletions
|
|
@ -44,7 +44,9 @@
|
|||
:offset
|
||||
:modifiers, :merge-modifiers
|
||||
:insert-into
|
||||
:columns, :merge-columns
|
||||
:values, :merge-values
|
||||
:query-values
|
||||
:update
|
||||
:set
|
||||
:delete-from"
|
||||
|
|
|
|||
|
|
@ -147,8 +147,9 @@
|
|||
|
||||
(def clause-order
|
||||
"Determines the order that clauses will be placed within generated SQL"
|
||||
[:select :insert-into :update :delete-from :set :from :join :left-join :right-join :where :group-by :having
|
||||
:order-by :limit :offset :values])
|
||||
[:select :insert-into :update :delete-from :columns :set :from :join
|
||||
:left-join :right-join :where :group-by :having :order-by :limit :offset
|
||||
:values :query-values])
|
||||
|
||||
(def known-clauses (set clause-order))
|
||||
|
||||
|
|
@ -333,6 +334,9 @@
|
|||
(defmethod format-clause :insert-into [[_ table] _]
|
||||
(str "INSERT INTO " (to-sql table)))
|
||||
|
||||
(defmethod format-clause :columns [[_ fields] _]
|
||||
(str "(" (comma-join (map to-sql fields)) ")"))
|
||||
|
||||
(defmethod format-clause :values [[_ values] _]
|
||||
(if (sequential? (first values))
|
||||
(str "VALUES " (comma-join (for [x values]
|
||||
|
|
@ -342,6 +346,9 @@
|
|||
(comma-join (for [x values]
|
||||
(str "(" (comma-join (map to-sql (vals x))) ")"))))))
|
||||
|
||||
(defmethod format-clause :query-values [[_ query-values] _]
|
||||
(to-sql query-values))
|
||||
|
||||
(defmethod format-clause :update [[_ table] _]
|
||||
(str "UPDATE " (to-sql table)))
|
||||
|
||||
|
|
|
|||
|
|
@ -161,20 +161,33 @@
|
|||
([table] (insert-into nil table))
|
||||
([m table] (build-clause :insert-into m table)))
|
||||
|
||||
(defmethod build-clause :values [_ m values]
|
||||
(assoc m :values values))
|
||||
(defhelper columns [m fields]
|
||||
(assoc m :columns (collify fields)))
|
||||
|
||||
(defhelper merge-columns [m fields]
|
||||
(update-in m [:columns] concat (collify fields)))
|
||||
|
||||
(defmethod build-clause :values [_ m vs]
|
||||
(assoc m :values vs))
|
||||
|
||||
(defn values
|
||||
([vs] (values nil vs))
|
||||
([m vs] (build-clause :values m vs)))
|
||||
|
||||
(defmethod build-clause :merge-values [_ m values]
|
||||
(update-in m [:values] concat values))
|
||||
(defmethod build-clause :merge-values [_ m vs]
|
||||
(update-in m [:values] concat vs))
|
||||
|
||||
(defn merge-values
|
||||
([vs] (merge-values nil vs))
|
||||
([m vs] (build-clause :merge-values m vs)))
|
||||
|
||||
(defmethod build-clause :query-values [_ m vs]
|
||||
(assoc m :query-values vs))
|
||||
|
||||
(defn query-values
|
||||
([vs] (values nil vs))
|
||||
([m vs] (build-clause :query-values m vs)))
|
||||
|
||||
(defmethod build-clause :update [_ m table]
|
||||
(assoc m :update table))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue