diff --git a/CHANGELOG.md b/CHANGELOG.md index 3aeb78d..7dc6138 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,31 @@ # Change Log +## 28.01.2022 + +### `io.github.kit-clj/kit-mysql {:mvn/version 1.0.0}` + +- Initial release [PR #18](https://github.com/kit-clj/kit/pull/18) + +### `io.github.kit-clj/kit-sql {:mvn/version 1.1.0}` + +- Change: Now just a bare bones wrapper that imports kit-sql-conman and kit-sql-migratus for compatibility purposes + +### `io.github.kit-clj/kit-sql-conman {:mvn/version 1.0.0}` + +- Initial release + +### `io.github.kit-clj/kit-sql-hikari {:mvn/version 1.0.1}` + +- Initial release + +### `io.github.kit-clj/kit-sql-migratus {:mvn/version 1.0.0}` + +- Initial release + +### `io.github.kit-clj/lein-template {:mvn/version "0.1.6"}` + +- Template updated for the sql variants + ## 23.01.2022 ### `io.github.kit-clj/lein-template {:mvn/version "0.1.5"}` diff --git a/build.clj b/build.clj index 245c955..c829b9e 100644 --- a/build.clj +++ b/build.clj @@ -110,7 +110,7 @@ (if (contains? dep-mappings lib) (if (not-empty (dep/transitive-dependencies graph lib)) (doseq [lib' (concat (dep/transitive-dependencies graph lib) [lib])] - (all (= lib' lib) lib')) + (all (and publish? (= lib' lib)) lib')) (all publish? lib)) (println "Can't find: " artifact-id)))) diff --git a/libs/kit-mysql/deps.edn b/libs/kit-mysql/deps.edn index 19d2f8b..c4ae4b9 100644 --- a/libs/kit-mysql/deps.edn +++ b/libs/kit-mysql/deps.edn @@ -1,3 +1,2 @@ {:paths ["src"] - :deps {mysql/mysql-connector-java {:mvn/version "8.0.27"} - }} + :deps {mysql/mysql-connector-java {:mvn/version "8.0.28"}}} diff --git a/libs/kit-sql-conman/deps.edn b/libs/kit-sql-conman/deps.edn new file mode 100644 index 0000000..a329bde --- /dev/null +++ b/libs/kit-sql-conman/deps.edn @@ -0,0 +1,4 @@ +{:paths ["src"] + :deps {integrant/integrant {:mvn/version "0.8.0"} + conman/conman {:mvn/version "0.9.3"} + io.github.kit-clj/kit-core {:mvn/version "1.0.1"}}} diff --git a/libs/kit-sql-conman/src/kit/edge/db/sql/conman.clj b/libs/kit-sql-conman/src/kit/edge/db/sql/conman.clj new file mode 100644 index 0000000..45333f9 --- /dev/null +++ b/libs/kit-sql-conman/src/kit/edge/db/sql/conman.clj @@ -0,0 +1,30 @@ +(ns kit.edge.db.sql.conman + (:require + [conman.core :as conman] + [integrant.core :as ig] + [kit.ig-utils :as ig-utils] + [migratus.core :as migratus])) + +(defmethod ig/init-key :db.sql/connection + [_ pool-spec] + (conman/connect! pool-spec)) + +(defmethod ig/suspend-key! :db.sql/connection [_ _]) + +(defmethod ig/halt-key! :db.sql/connection + [_ conn] + (conman/disconnect! conn)) + +(defmethod ig/resume-key :db.sql/connection + [key opts old-opts old-impl] + (ig-utils/resume-handler key opts old-opts old-impl)) + +(defmethod ig/init-key :db.sql/query-fn + [_ {:keys [conn options filename] + :or {options {}}}] + (let [queries (conman/bind-connection-map conn options filename)] + (fn + ([query params] + (conman/query queries query params)) + ([conn query params & opts] + (apply conman/query conn queries query params opts))))) \ No newline at end of file diff --git a/libs/kit-sql-general/deps.edn b/libs/kit-sql-general/deps.edn deleted file mode 100644 index 2e5c6ef..0000000 --- a/libs/kit-sql-general/deps.edn +++ /dev/null @@ -1,5 +0,0 @@ -{:paths ["src"] - :deps {integrant/integrant {:mvn/version "0.8.0"} - seancorfield/next.jdbc {:mvn/version "1.1.613"} - hikari-cp/hikari-cp {:mvn/version "2.13.0"} - io.github.kit-clj/kit-core {:mvn/version "1.0.0"}}} diff --git a/libs/kit-sql-hikari/deps.edn b/libs/kit-sql-hikari/deps.edn new file mode 100644 index 0000000..8ba6f57 --- /dev/null +++ b/libs/kit-sql-hikari/deps.edn @@ -0,0 +1,5 @@ +{:paths ["src"] + :deps {integrant/integrant {:mvn/version "0.8.0"} + com.github.seancorfield/next.jdbc {:mvn/version "1.2.761"} ;; TODO: is this required here? + hikari-cp/hikari-cp {:mvn/version "2.13.0"} + io.github.kit-clj/kit-core {:mvn/version "1.0.1"}}} diff --git a/libs/kit-sql-general/src/kit/edge/db/sql/general.clj b/libs/kit-sql-hikari/src/kit/edge/db/sql/hikari.clj similarity index 79% rename from libs/kit-sql-general/src/kit/edge/db/sql/general.clj rename to libs/kit-sql-hikari/src/kit/edge/db/sql/hikari.clj index 7352beb..49be78b 100644 --- a/libs/kit-sql-general/src/kit/edge/db/sql/general.clj +++ b/libs/kit-sql-hikari/src/kit/edge/db/sql/hikari.clj @@ -1,21 +1,21 @@ -(ns kit.edge.db.sql.general +(ns kit.edge.db.sql.hikari (:require + [hikari-cp.core :as cp] [integrant.core :as ig] [kit.ig-utils :as ig-utils] - [hikari-cp.core :as cp] )) -(defmethod ig/init-key :db.sql.general/connection +(defmethod ig/init-key :db.sql/hikari-connection [_ pool-spec] (cp/make-datasource pool-spec)) -(defmethod ig/suspend-key! :db.sql.general/connection [_ _]) +(defmethod ig/suspend-key! :db.sql/hikari-connection [_ _]) -(defmethod ig/halt-key! :db.sql.general/connection +(defmethod ig/halt-key! :db.sql/hikari-connection [_ conn] (cp/close-datasource conn)) -(defmethod ig/resume-key :db.sql.general/connection +(defmethod ig/resume-key :db.sql/hikari-connection [key opts old-opts old-impl] (ig-utils/resume-handler key opts old-opts old-impl)) diff --git a/libs/kit-sql-migratus/deps.edn b/libs/kit-sql-migratus/deps.edn new file mode 100644 index 0000000..ea2f620 --- /dev/null +++ b/libs/kit-sql-migratus/deps.edn @@ -0,0 +1,3 @@ +{:paths ["src"] + :deps {integrant/integrant {:mvn/version "0.8.0"} + migratus/migratus {:mvn/version "1.3.5"}}} diff --git a/libs/kit-sql-migratus/src/kit/edge/db/sql/migratus.clj b/libs/kit-sql-migratus/src/kit/edge/db/sql/migratus.clj new file mode 100644 index 0000000..c4a5bf5 --- /dev/null +++ b/libs/kit-sql-migratus/src/kit/edge/db/sql/migratus.clj @@ -0,0 +1,13 @@ +(ns kit.edge.db.sql.migratus + (:require + [integrant.core :as ig] + [migratus.core :as migratus])) + +(defmethod ig/init-key :db.sql/migrations + [_ {:keys [migrate-on-init?] + :or {migrate-on-init? true} + :as component}] + (when migrate-on-init? + (migratus/migrate component)) + component) + diff --git a/libs/kit-sql/deps.edn b/libs/kit-sql/deps.edn index 296c00b..40a2ebd 100644 --- a/libs/kit-sql/deps.edn +++ b/libs/kit-sql/deps.edn @@ -1,5 +1,3 @@ {:paths ["src"] - :deps {integrant/integrant {:mvn/version "0.8.0"} - conman/conman {:mvn/version "0.9.3"} - migratus/migratus {:mvn/version "1.3.5"} - io.github.kit-clj/kit-core {:mvn/version "1.0.0"}}} + :deps {io.github.kit-clj/kit-sql-conman {:mvn/version "1.0.0"} + io.github.kit-clj/kit-sql-migratus {:mvn/version "1.0.0"}}} diff --git a/libs/kit-sql/src/kit/edge/db/sql.clj b/libs/kit-sql/src/kit/edge/db/sql.clj index 20cf21c..c5a5340 100644 --- a/libs/kit-sql/src/kit/edge/db/sql.clj +++ b/libs/kit-sql/src/kit/edge/db/sql.clj @@ -1,38 +1,6 @@ (ns kit.edge.db.sql + "This library simply in kit-sql-conman and kit-sql-migratus for compatibility purposes. + It serves no other purpose" (:require - [conman.core :as conman] - [integrant.core :as ig] - [kit.ig-utils :as ig-utils] - [migratus.core :as migratus])) - -(defmethod ig/init-key :db.sql/connection - [_ pool-spec] - (conman/connect! pool-spec)) - -(defmethod ig/suspend-key! :db.sql/connection [_ _]) - -(defmethod ig/halt-key! :db.sql/connection - [_ conn] - (conman/disconnect! conn)) - -(defmethod ig/resume-key :db.sql/connection - [key opts old-opts old-impl] - (ig-utils/resume-handler key opts old-opts old-impl)) - -(defmethod ig/init-key :db.sql/query-fn - [_ {:keys [conn options filename] - :or {options {}}}] - (let [queries (conman/bind-connection-map conn options filename)] - (fn - ([query params] - (conman/query queries query params)) - ([conn query params & opts] - (apply conman/query conn queries query params opts))))) - -(defmethod ig/init-key :db.sql/migrations - [_ {:keys [migrate-on-init?] - :or {migrate-on-init? true} - :as component}] - (when migrate-on-init? - (migratus/migrate component)) - component) + [kit.edge.db.sql.conman] + [kit.edge.db.sql.migratus])) diff --git a/libs/lein-template/resources/leiningen/new/kit/deps.edn b/libs/lein-template/resources/leiningen/new/kit/deps.edn index 2f31554..03e22c3 100644 --- a/libs/lein-template/resources/leiningen/new/kit/deps.edn +++ b/libs/lein-template/resources/leiningen/new/kit/deps.edn @@ -20,10 +20,14 @@ io.github.kit-clj/kit-core {:mvn/version "<>"} io.github.kit-clj/kit-undertow {:mvn/version "<>"}<% if xtdb? %> io.github.kit-clj/kit-xtdb {:mvn/version "<>"}<% endif %><% if mysql? %> - io.github.kit-clj/kit-sql-general {:mvn/version "<>"} - io.github.kit-clj/kit-mysql {:mvn/version "<>"}<% endif %><% if pgsql? %> - io.github.kit-clj/kit-sql {:mvn/version "<>"} - io.github.kit-clj/kit-postgres{:mvn/version "<>"}<% endif %><% if hato? %> + io.github.kit-clj/kit-mysql {:mvn/version "<>"}<%if conman? %> + io.github.kit-clj/kit-sql-conman {:mvn/version "<>"} + io.github.kit-clj/kit-sql-migratus {:mvn/version "<>"}<% endif %><% if hikari? %> + io.github.kit-clj/kit-sql-hikari {:mvn/version "<>"}<% endif %><% endif %><% if sql? %> + io.github.kit-clj/kit-postgres{:mvn/version "<>"}<%if conman? %> + io.github.kit-clj/kit-sql-conman {:mvn/version "<>"} + io.github.kit-clj/kit-sql-migratus {:mvn/version "<>"}<% endif %><% if hikari? %> + io.github.kit-clj/kit-sql-hikari {:mvn/version "<>"}<% endif %><% endif %><% if hato? %> io.github.kit-clj/kit-hato {:mvn/version "<>"}<% endif %><% if quartz? %> io.github.kit-clj/kit-quartz {:mvn/version "<>"}<% endif %><% if redis? %> io.github.kit-clj/kit-redis {:mvn/version "<>"}<% endif %><% if selmer? %> diff --git a/libs/lein-template/resources/leiningen/new/kit/project.clj b/libs/lein-template/resources/leiningen/new/kit/project.clj deleted file mode 100644 index e8d3817..0000000 --- a/libs/lein-template/resources/leiningen/new/kit/project.clj +++ /dev/null @@ -1,72 +0,0 @@ -(defproject <> "0.1.0-SNAPSHOT" - :description "TODO" - :url "TODO" - :license {:name "TODO" - :url "TODO"} - - :dependencies [[org.clojure/clojure "1.10.3"] - - ;; Routing - [metosin/reitit "0.5.13"] - - ;; Ring - [metosin/ring-http-response "0.9.2"] - [ring/ring-core "1.9.3"] - [ring/ring-defaults "0.3.3"] - - ;; Data coercion - [luminus-transit "0.1.2" :exclusions [com.cognitect/transit-clj]] - [metosin/muuntaja "0.6.8"] - - ;; kit Libs - [kit-clj/kit-core "<>"] - [kit-clj/kit-undertow "<>"]<% if xtdb? %> - [kit-clj/kit-xtdb "<>"]<% endif %><% if mysql? %> - [kit-clj/kit-sql-general "<>"] - [kit-clj/kit-mysql "<>"]<% endif %> <% if pgsql? %> - [kit-clj/kit-sql "<>"] - [kit-clj/kit-postgres "<>"]<% endif %> <% if hato? %> - [kit-clj/kit-hato "<>"]<% endif %> <% if quartz? %> - [kit-clj/kit-quartz "<>"]<% endif %> <% if redis? %> - [kit-clj/kit-redis "<>"]<% endif %> <% if selmer? %> - [kit-clj/kit-selmer "<>"]<% endif %> <% if metrics? %> - [kit-clj/kit-metrics "<>"]<% endif %> <% if repl? %> - [kit-clj/kit-repl "<>"]<% endif %><% if nrepl? %> - [kit-clj/kit-nrepl "<>"]<% endif %>] - - :min-lein-version "2.0.0" - - :source-paths ["src/clj"] - :test-paths ["test/clj"] - :resource-paths ["resources"] - :target-path "target/%s/" - :main ^:skip-aot <>.core - - :profiles - {:uberjar {:omit-source true - :aot :all - :uberjar-name "<>.jar" - :source-paths ["env/prod/clj"] - :resource-paths ["env/prod/resources"]} - - :dev [:project/dev :profiles/dev] - :test [:project/dev :project/test :profiles/test] - - :project/dev {:dependencies [[criterium "0.4.6"] - [expound "0.8.9"] - [integrant/repl "0.3.2"] - [pjstadig/humane-test-output "0.11.0"] - [ring/ring-devel "1.9.3"] - [ring/ring-mock "0.4.0"]] - :plugins [[com.jakemccrary/lein-test-refresh "0.24.1"] - [lein-ancient "1.0.0-RC3"]] - - :source-paths ["env/dev/clj"] - :resource-paths ["env/dev/resources"] - :repl-options {:init-ns user - :timeout 120000} - :injections [(require 'pjstadig.humane-test-output) - (pjstadig.humane-test-output/activate!)]} - :project/test {:resource-paths ["env/test/resources"]} - :profiles/dev {} - :profiles/test {}}) diff --git a/libs/lein-template/resources/leiningen/new/kit/resources/system.edn b/libs/lein-template/resources/leiningen/new/kit/resources/system.edn index 9c492b7..7fc7f34 100644 --- a/libs/lein-template/resources/leiningen/new/kit/resources/system.edn +++ b/libs/lein-template/resources/leiningen/new/kit/resources/system.edn @@ -73,8 +73,8 @@ :db.xtdb/node {} <% endif %> - <% if mysql? %> - :db.sql.general/connection + <% if hikari? %> + :db.sql/hikari-connection #profile {:dev {:jdbc-url "jdbc:mysql://127.0.0.1:3306/<>?characterEncoding=utf8"} :test {} :prod {:auto-commit true @@ -92,7 +92,7 @@ :driver-class-name "com.mysql.jdbc.Driver" :register-mbeans false}} <% endif %> - <% if pgsql? %> + <% if conman? %> :db.sql/connection #profile {:dev {:jdbc-url "jdbc:postgresql://localhost/<>?user=<>&password=<>"} :test {} @@ -106,7 +106,8 @@ {:conn #ig/ref :db.sql/connection :options {} :filename "queries.sql"} - + <% endif %> + <% if sql? %> :db.sql/migrations {:store :database :db {:datasource #ig/ref :db.sql/connection} diff --git a/libs/lein-template/resources/leiningen/new/kit/src/clj/core.clj b/libs/lein-template/resources/leiningen/new/kit/src/clj/core.clj index ad31b0d..fd2b582 100644 --- a/libs/lein-template/resources/leiningen/new/kit/src/clj/core.clj +++ b/libs/lein-template/resources/leiningen/new/kit/src/clj/core.clj @@ -7,11 +7,12 @@ ;; Edges <% if redis? %> [kit.edge.cache.redis]<% endif %> <% if xtdb? %> - [kit.edge.db.xtdb]<% endif %><% if mysql? %> - [kit.edge.db.sql.general] - [kit.edge.db.sql.mysql]<% endif %><% if pgsql? %> - [kit.edge.db.sql] - [kit.edge.db.postgres]<% endif %> <% if hato? %> + [kit.edge.db.xtdb]<% endif %><% if hikari? %> + [kit.edge.db.sql.hikari]<% endif %><% if sql? %> + [kit.edge.db.sql.conman] + [kit.edge.db.sql.migratus] + [kit.edge.db.postgres]<% endif %><% if mysql? %> + [kit.edge.db.sql.mysql]<% endif %><% if hato? %> [kit.edge.http.hato]<% endif %> <% if quartz? %> [kit.edge.scheduling.quartz]<% endif %> <% if selmer? %> [kit.edge.templating.selmer]<% endif %> <% if metrics? %> diff --git a/libs/lein-template/src/leiningen/new/io/github/kit_clj.clj b/libs/lein-template/src/leiningen/new/io/github/kit_clj.clj index a5b4490..e15b618 100644 --- a/libs/lein-template/src/leiningen/new/io/github/kit_clj.clj +++ b/libs/lein-template/src/leiningen/new/io/github/kit_clj.clj @@ -25,6 +25,12 @@ :xtdb? (or full? (helpers/option? "+xtdb" options) (helpers/option? "+xtdb" options)) :sql? (or full? (helpers/option? "+sql" options)) + :mysql? (helpers/option? "+mysql" options) + :conman? (and (or full? + (helpers/option? "+sql" options) + (helpers/option? "+mysql" options)) + (not (helpers/option? "+mysql" options))) + :hikari? (helpers/option? "+hikari" options) :hato? (or full? (helpers/option? "+hato" options)) :metrics? (or full? (helpers/option? "+metrics" options)) :quartz? (or full? (helpers/option? "+quartz" options)) @@ -34,20 +40,23 @@ :repl? (or full? (helpers/option? "+socket-repl" options)) :nrepl? (helpers/option? "+nrepl" options) - :versions {:kit-core "1.0.1" - :kit-http-kit "1.0.1" - :kit-xtdb "1.0.0" - :kit-generator "0.1.2" - :kit-hato "1.0.0" - :kit-nrepl "1.0.0" - :kit-metrics "1.0.2" - :kit-postgres "1.0.0" - :kit-quartz "1.0.0" - :kit-redis "1.0.1" - :kit-repl "1.0.1" - :kit-selmer "1.0.1" - :kit-sql "1.0.0" - :kit-undertow "1.0.1"}})) + :versions {:kit-core "1.0.1" + :kit-http-kit "1.0.1" + :kit-xtdb "1.0.0" + :kit-generator "0.1.2" + :kit-hato "1.0.0" + :kit-nrepl "1.0.0" + :kit-metrics "1.0.2" + :kit-postgres "1.0.0" + :kit-mysql "1.0.0" + :kit-quartz "1.0.0" + :kit-redis "1.0.1" + :kit-repl "1.0.1" + :kit-selmer "1.0.1" + :kit-sql "1.1.0" + :kit-sql-conman "1.0.0" + :kit-sql-migratus "1.0.0" + :kit-undertow "1.0.1"}})) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -62,6 +71,8 @@ "+redis" "+selmer" "+sql" + "+mysql" + "+hikari" "+nrepl" "+socket-repl"}) @@ -76,8 +87,8 @@ (defn check-conflicts [options] #_(when (> (count (filter #{"+full" "+bare"} options)) - 1) - (throw (ex-info "Cannot have both +full and +bare profile present" {})))) + 1) + (throw (ex-info "Cannot have both +full and +bare profile present" {})))) (defn check-options "Check the user-provided options" diff --git a/versions.edn b/versions.edn index 3ce771c..b8ab9cd 100644 --- a/versions.edn +++ b/versions.edn @@ -1,15 +1,19 @@ -{"kit-core" "1.0.1" - "kit-http-kit" "1.0.1" - "kit-xtdb" "1.0.0" - "kit-generator" "0.1.2" - "kit-hato" "1.0.0" - "kit-nrepl" "1.0.0" - "kit-metrics" "1.0.2" - "kit-postgres" "1.0.0" - "kit-quartz" "1.0.0" - "kit-redis" "1.0.1" - "kit-repl" "1.0.1" - "kit-selmer" "1.0.1" - "kit-sql" "1.0.0" - "kit-undertow" "1.0.1" - "lein-template" "0.1.5"} +{"kit-core" "1.0.1" + "kit-http-kit" "1.0.1" + "kit-xtdb" "1.0.0" + "kit-generator" "0.1.2" + "kit-hato" "1.0.0" + "kit-nrepl" "1.0.0" + "kit-metrics" "1.0.2" + "kit-mysql" "1.0.0" + "kit-postgres" "1.0.0" + "kit-quartz" "1.0.0" + "kit-redis" "1.0.1" + "kit-repl" "1.0.1" + "kit-selmer" "1.0.1" + "kit-sql" "1.1.0" + "kit-sql-migratus" "1.0.0" + "kit-sql-conman" "1.0.0" + "kit-sql-hikari" "1.0.1" + "kit-undertow" "1.0.1" + "lein-template" "0.1.6"}