From f84726a48b9d3f5d333dc560d85f515aa77b42b3 Mon Sep 17 00:00:00 2001 From: Sean Corfield Date: Sun, 14 Feb 2021 11:37:27 -0800 Subject: [PATCH] Reformatting to prepare for docstring addition --- src/honey/sql/helpers.cljc | 294 +++++++++++++++++++++++++++++-------- 1 file changed, 234 insertions(+), 60 deletions(-) diff --git a/src/honey/sql/helpers.cljc b/src/honey/sql/helpers.cljc index ada71c8..2620056 100644 --- a/src/honey/sql/helpers.cljc +++ b/src/honey/sql/helpers.cljc @@ -3,7 +3,9 @@ (ns honey.sql.helpers "Helper functions for the built-in clauses in honey.sql." (:refer-clojure :exclude [update set group-by for partition-by]) - (:require [honey.sql :as h])) + (:require [honey.sql])) + +;; implementation helpers: (defn- default-merge [current args] (into (vec current) args)) @@ -43,17 +45,50 @@ (assoc data k arg) (assoc {} k data))) -(defn alter-table [& args] (generic :alter-table args)) -(defn add-column [& args] (generic :add-column args)) -(defn drop-column [& args] (generic-1 :drop-column args)) -(defn modify-column [& args] (generic :modify-column args)) -(defn rename-column [& args] (generic :rename-column args)) -(defn add-index [& args] (generic :add-index args)) -(defn drop-index [& args] (generic-1 :drop-index args)) -(defn rename-table [& args] (generic-1 :rename-table args)) -(defn create-table [& args] (generic :create-table args)) -(defn create-extension [& args] (generic :create-extension args)) -(defn with-columns [& args] +;; for every clause, there is a public helper + +(defn alter-table + [& args] + (generic :alter-table args)) + +(defn add-column + [& args] + (generic :add-column args)) + +(defn drop-column + [& args] + (generic-1 :drop-column args)) + +(defn modify-column + [& args] + (generic :modify-column args)) + +(defn rename-column + [& args] + (generic :rename-column args)) + +(defn add-index + [& args] + (generic :add-index args)) + +(defn drop-index + [& args] + (generic-1 :drop-index args)) + +(defn rename-table + [& args] + (generic-1 :rename-table args)) + +(defn create-table + [& args] + (generic :create-table args)) + +(defn create-extension + [& args] + (generic :create-extension args)) + +(defn with-columns + [& args] ;; special case so (with-columns [[:col-1 :definition] [:col-2 :definition]]) ;; also works in addition to (with-columns [:col-1 :definition] [:col-2 :definition]) (cond (and (= 1 (count args)) (sequential? (first args)) (sequential? (ffirst args))) @@ -62,59 +97,198 @@ (generic-1 :with-columns args) :else (generic :with-columns args))) -(defn create-view [& args] (generic-1 :create-view args)) -(defn drop-table [& args] (generic :drop-table args)) -(defn drop-extension [& args] (generic :drop-extension args)) -(defn nest [& args] (generic :nest args)) -(defn with [& args] (generic :with args)) -(defn with-recursive [& args] (generic :with-recursive args)) + +(defn create-view + [& args] + (generic-1 :create-view args)) + +(defn drop-table + [& args] + (generic :drop-table args)) + +(defn drop-extension + [& args] + (generic :drop-extension args)) + +(defn nest + [& args] + (generic :nest args)) + +(defn with + [& args] + (generic :with args)) + +(defn with-recursive + [& args] + (generic :with-recursive args)) + ;; these five need to supply an empty hash map since they wrap ;; all of their arguments: -(defn intersect [& args] (generic :intersect (cons {} args))) -(defn union [& args] (generic :union (cons {} args))) -(defn union-all [& args] (generic :union-all (cons {} args))) -(defn except [& args] (generic :except (cons {} args))) -(defn except-all [& args] (generic :except-all (cons {} args))) +(defn intersect + [& args] + (generic :intersect (cons {} args))) -(defn select [& args] (generic :select args)) -(defn select-distinct [& args] (generic :select-distinct args)) -(defn select-distinct-on [& args] (generic :select-distinct-on args)) -(defn insert-into [& args] (generic :insert-into args)) -(defn update [& args] (generic :update args)) -(defn delete [& args] (generic-1 :delete args)) -(defn delete-from [& args] (generic :delete-from args)) -(defn truncate [& args] (generic :truncate args)) -(defn columns [& args] (generic :columns args)) -(defn set [& args] (generic-1 :set args)) -(defn from [& args] (generic :from args)) -(defn using [& args] (generic :using args)) -(defn join [& args] (generic :join args)) -(defn left-join [& args] (generic :left-join args)) -(defn right-join [& args] (generic :right-join args)) -(defn inner-join [& args] (generic :inner-join args)) -(defn outer-join [& args] (generic :outer-join args)) -(defn full-join [& args] (generic :full-join args)) -(defn cross-join [& args] (generic :cross-join args)) -(defn where [& args] (generic :where args)) -(defn group-by [& args] (generic :group-by args)) -(defn having [& args] (generic :having args)) -(defn window [& args] (generic :window args)) -(defn partition-by [& args] (generic :partition-by args)) -(defn order-by [& args] (generic :order-by args)) -(defn limit [& args] (generic-1 :limit args)) -(defn offset [& args] (generic-1 :offset args)) -(defn for [& args] (generic-1 :for args)) -(defn values [& args] (generic-1 :values args)) -(defn on-conflict [& args] (generic-1 :on-conflict args)) -(defn on-constraint [& args] (generic :on-constraint args)) -(defn do-nothing [& args] (generic :do-nothing args)) -(defn do-update-set [& args] (generic :do-update-set args)) -(defn returning [& args] (generic :returning args)) +(defn union + [& args] + (generic :union (cons {} args))) + +(defn union-all + [& args] + (generic :union-all (cons {} args))) + +(defn except + [& args] + (generic :except (cons {} args))) + +(defn except-all + [& args] + (generic :except-all (cons {} args))) + +(defn select + [& args] + (generic :select args)) + +(defn select-distinct + [& args] + (generic :select-distinct args)) + +(defn select-distinct-on + [& args] + (generic :select-distinct-on args)) + +(defn insert-into + [& args] + (generic :insert-into args)) + +(defn update + [& args] + (generic :update args)) + +(defn delete + [& args] + (generic-1 :delete args)) + +(defn delete-from + [& args] + (generic :delete-from args)) + +(defn truncate + [& args] + (generic :truncate args)) + +(defn columns + [& args] + (generic :columns args)) + +(defn set + [& args] + (generic-1 :set args)) + +(defn from + [& args] + (generic :from args)) + +(defn using + [& args] + (generic :using args)) + +(defn join + [& args] + (generic :join args)) + +(defn left-join + [& args] + (generic :left-join args)) + +(defn right-join + [& args] + (generic :right-join args)) + +(defn inner-join + [& args] + (generic :inner-join args)) + +(defn outer-join + [& args] + (generic :outer-join args)) + +(defn full-join + [& args] + (generic :full-join args)) + +(defn cross-join + [& args] + (generic :cross-join args)) + +(defn where + [& args] + (generic :where args)) + +(defn group-by + [& args] + (generic :group-by args)) + +(defn having + [& args] + (generic :having args)) + +(defn window + [& args] + (generic :window args)) + +(defn partition-by + [& args] + (generic :partition-by args)) + +(defn order-by + [& args] + (generic :order-by args)) + +(defn limit + [& args] + (generic-1 :limit args)) + +(defn offset + [& args] + (generic-1 :offset args)) + +(defn for + [& args] + (generic-1 :for args)) + +(defn values + [& args] + (generic-1 :values args)) + +(defn on-conflict + [& args] + (generic-1 :on-conflict args)) + +(defn on-constraint + [& args] + (generic :on-constraint args)) + +(defn do-nothing + [& args] + (generic :do-nothing args)) + +(defn do-update-set + [& args] + (generic :do-update-set args)) + +(defn returning + [& args] + (generic :returning args)) ;; helpers that produce non-clause expressions -- must be listed below: -(defn composite [& args] (into [:composite] args)) +(defn composite + [& args] + (into [:composite] args)) + ;; to make this easy to use in a select, wrap it so it becomes a function: -(defn over [& args] [(into [:over] args)]) +(defn over + [& args] + [(into [:over] args)]) ;; this helper is intended to ease the migration from nilenso: (defn upsert @@ -133,6 +307,6 @@ do-update-set)))))) #?(:clj - (assert (= (clojure.core/set (conj @@#'h/base-clause-order + (assert (= (clojure.core/set (conj @@#'honey.sql/base-clause-order :composite :over :upsert)) (clojure.core/set (map keyword (keys (ns-publics *ns*)))))))