From b41d6534ca90b28a8b25eae8dd58ce1f7abed03d Mon Sep 17 00:00:00 2001 From: Charlotte Allen Date: Mon, 27 Jan 2020 19:42:36 -0800 Subject: [PATCH] Revert adding a db since I'm going with flat files --- env/dev/clj/user.clj | 41 ++------- env/dev/resources/logback.xml | 1 - env/prod/resources/logback.xml | 1 - env/test/resources/logback.xml | 1 - project.clj | 3 - resources/docs/docs.md | 15 ---- .../20200106192245-add-users-table.down.sql | 1 - .../20200106192245-add-users-table.up.sql | 9 -- resources/sql/queries.sql | 21 ----- src/clj/shapey_shifty/core.clj | 33 ++----- src/clj/shapey_shifty/db/core.clj | 85 ------------------- src/clj/shapey_shifty/routes/home.clj | 1 - test/clj/shapey_shifty/test/db/core.clj | 38 --------- 13 files changed, 13 insertions(+), 237 deletions(-) delete mode 100644 resources/migrations/20200106192245-add-users-table.down.sql delete mode 100644 resources/migrations/20200106192245-add-users-table.up.sql delete mode 100644 resources/sql/queries.sql delete mode 100644 src/clj/shapey_shifty/db/core.clj delete mode 100644 test/clj/shapey_shifty/test/db/core.clj diff --git a/env/dev/clj/user.clj b/env/dev/clj/user.clj index 14c59a8..65cd7a8 100644 --- a/env/dev/clj/user.clj +++ b/env/dev/clj/user.clj @@ -2,14 +2,11 @@ "Userspace functions you can run by default in your local REPL." (:require [shapey-shifty.config :refer [env]] - [clojure.pprint] - [clojure.spec.alpha :as s] - [expound.alpha :as expound] - [mount.core :as mount] - [shapey-shifty.core :refer [start-app]] - [shapey-shifty.db.core] - [conman.core :as conman] - [luminus-migrations.core :as migrations])) + [clojure.pprint] + [clojure.spec.alpha :as s] + [expound.alpha :as expound] + [mount.core :as mount] + [shapey-shifty.core :refer [start-app]])) (alter-var-root #'s/*explain-out* (constantly expound/printer)) @@ -32,32 +29,4 @@ (stop) (start)) -(defn restart-db - "Restarts database." - [] - (mount/stop #'shapey-shifty.db.core/*db*) - (mount/start #'shapey-shifty.db.core/*db*) - (binding [*ns* 'shapey-shifty.db.core] - (conman/bind-connection shapey-shifty.db.core/*db* "sql/queries.sql"))) - -(defn reset-db - "Resets database." - [] - (migrations/migrate ["reset"] (select-keys env [:database-url]))) - -(defn migrate - "Migrates database up for all outstanding migrations." - [] - (migrations/migrate ["migrate"] (select-keys env [:database-url]))) - -(defn rollback - "Rollback latest database migration." - [] - (migrations/migrate ["rollback"] (select-keys env [:database-url]))) - -(defn create-migration - "Create a new up and down migration file with a generated timestamp and `name`." - [name] - (migrations/create name (select-keys env [:database-url]))) - diff --git a/env/dev/resources/logback.xml b/env/dev/resources/logback.xml index db59388..8219609 100644 --- a/env/dev/resources/logback.xml +++ b/env/dev/resources/logback.xml @@ -26,7 +26,6 @@ - diff --git a/env/prod/resources/logback.xml b/env/prod/resources/logback.xml index 2e68a51..9975a5b 100644 --- a/env/prod/resources/logback.xml +++ b/env/prod/resources/logback.xml @@ -18,7 +18,6 @@ - diff --git a/env/test/resources/logback.xml b/env/test/resources/logback.xml index db59388..8219609 100644 --- a/env/test/resources/logback.xml +++ b/env/test/resources/logback.xml @@ -26,7 +26,6 @@ - diff --git a/project.clj b/project.clj index 936823a..18854a1 100644 --- a/project.clj +++ b/project.clj @@ -7,12 +7,10 @@ [cheshire "5.9.0"] [clojure.java-time "0.3.2"] [org.clojure/data.json "0.2.7"] - [conman "0.8.4"] [cprop "0.1.15"] [expound "0.8.3"] [funcool/struct "1.4.0"] [luminus-jetty "0.1.7"] - [luminus-migrations "0.6.6"] [luminus-transit "0.1.2"] [luminus/ring-ttl-session "0.3.3"] [markdown-clj "1.10.1"] @@ -24,7 +22,6 @@ [org.clojure/clojure "1.10.1"] [org.clojure/tools.cli "0.4.2"] [org.clojure/tools.logging "0.5.0"] - [org.postgresql/postgresql "42.2.9"] [org.webjars.npm/bulma "0.8.0"] [org.webjars.npm/material-icons "0.3.1"] [org.webjars/webjars-locator "0.38"] diff --git a/resources/docs/docs.md b/resources/docs/docs.md index 57a8602..a96b3ad 100644 --- a/resources/docs/docs.md +++ b/resources/docs/docs.md @@ -91,21 +91,6 @@ the `env/dev/clj/` source path. learn more about middleware » -
- -#### Database configuration is required - -If you haven't already, then please follow the steps below to configure your database connection and run the necessary migrations. - -* Create the database for your application. -* Update the connection URL in the `dev-config.edn` and `test-config.edn` files with your database name and login credentials. -* Run `lein run migrate` in the root of the project to create the tables. -* Let `mount` know to start the database connection by `require`-ing `shapey-shifty.db.core` in some other namespace. -* Restart the application. - -learn more about database access » - -
diff --git a/resources/migrations/20200106192245-add-users-table.down.sql b/resources/migrations/20200106192245-add-users-table.down.sql deleted file mode 100644 index cc1f647..0000000 --- a/resources/migrations/20200106192245-add-users-table.down.sql +++ /dev/null @@ -1 +0,0 @@ -DROP TABLE users; diff --git a/resources/migrations/20200106192245-add-users-table.up.sql b/resources/migrations/20200106192245-add-users-table.up.sql deleted file mode 100644 index b9c31f1..0000000 --- a/resources/migrations/20200106192245-add-users-table.up.sql +++ /dev/null @@ -1,9 +0,0 @@ -CREATE TABLE users -(id VARCHAR(20) PRIMARY KEY, - first_name VARCHAR(30), - last_name VARCHAR(30), - email VARCHAR(30), - admin BOOLEAN, - last_login TIMESTAMP, - is_active BOOLEAN, - pass VARCHAR(300)); diff --git a/resources/sql/queries.sql b/resources/sql/queries.sql deleted file mode 100644 index 28d2b8c..0000000 --- a/resources/sql/queries.sql +++ /dev/null @@ -1,21 +0,0 @@ --- :name create-user! :! :n --- :doc creates a new user record -INSERT INTO users -(id, first_name, last_name, email, pass) -VALUES (:id, :first_name, :last_name, :email, :pass) - --- :name update-user! :! :n --- :doc updates an existing user record -UPDATE users -SET first_name = :first_name, last_name = :last_name, email = :email -WHERE id = :id - --- :name get-user :? :1 --- :doc retrieves a user record given the id -SELECT * FROM users -WHERE id = :id - --- :name delete-user! :! :n --- :doc deletes a user record given the id -DELETE FROM users -WHERE id = :id diff --git a/src/clj/shapey_shifty/core.clj b/src/clj/shapey_shifty/core.clj index 69d45b7..3169a6d 100644 --- a/src/clj/shapey_shifty/core.clj +++ b/src/clj/shapey_shifty/core.clj @@ -1,13 +1,12 @@ (ns shapey-shifty.core (:require - [shapey-shifty.handler :as handler] - [shapey-shifty.nrepl :as nrepl] - [luminus.http-server :as http] - [luminus-migrations.core :as migrations] - [shapey-shifty.config :refer [env]] - [clojure.tools.cli :refer [parse-opts]] - [clojure.tools.logging :as log] - [mount.core :as mount]) + [shapey-shifty.handler :as handler] + [shapey-shifty.nrepl :as nrepl] + [luminus.http-server :as http] + [shapey-shifty.config :refer [env]] + [clojure.tools.cli :refer [parse-opts]] + [clojure.tools.logging :as log] + [mount.core :as mount]) (:gen-class)) ;; log uncaught exceptions in threads @@ -55,20 +54,4 @@ (.addShutdownHook (Runtime/getRuntime) (Thread. stop-app))) (defn -main [& args] - (mount/start #'shapey-shifty.config/env) - (cond - (nil? (:database-url env)) - (do - (log/error "Database configuration not found, :database-url environment variable must be set before running") - (System/exit 1)) - (some #{"init"} args) - (do - (migrations/init (select-keys env [:database-url :init-script])) - (System/exit 0)) - (migrations/migration? args) - (do - (migrations/migrate args (select-keys env [:database-url])) - (System/exit 0)) - :else - (start-app args))) - + (start-app args)) diff --git a/src/clj/shapey_shifty/db/core.clj b/src/clj/shapey_shifty/db/core.clj deleted file mode 100644 index 8cac63b..0000000 --- a/src/clj/shapey_shifty/db/core.clj +++ /dev/null @@ -1,85 +0,0 @@ -(ns shapey-shifty.db.core - (:require - [cheshire.core :refer [generate-string parse-string]] - [clojure.java.jdbc :as jdbc] - [clojure.tools.logging :as log] - [conman.core :as conman] - [java-time :as jt] - [java-time.pre-java8] - [shapey-shifty.config :refer [env]] - [mount.core :refer [defstate]]) - (:import org.postgresql.util.PGobject - java.sql.Array - clojure.lang.IPersistentMap - clojure.lang.IPersistentVector - [java.sql - BatchUpdateException - PreparedStatement])) -(defstate ^:dynamic *db* - :start (if-let [jdbc-url (env :database-url)] - (conman/connect! {:jdbc-url jdbc-url}) - (do - (log/warn "database connection URL was not found, please set :database-url in your config, e.g: dev-config.edn") - *db*)) - :stop (conman/disconnect! *db*)) - -(conman/bind-connection *db* "sql/queries.sql") - -(extend-protocol jdbc/IResultSetReadColumn - java.sql.Timestamp - (result-set-read-column [v _2 _3] - (.toLocalDateTime v)) - java.sql.Date - (result-set-read-column [v _2 _3] - (.toLocalDate v)) - java.sql.Time - (result-set-read-column [v _2 _3] - (.toLocalTime v)) - Array - (result-set-read-column [v _ _] (vec (.getArray v))) - PGobject - (result-set-read-column [pgobj _metadata _index] - (let [type (.getType pgobj) - value (.getValue pgobj)] - (case type - "json" (parse-string value true) - "jsonb" (parse-string value true) - "citext" (str value) - value)))) - -(defn to-pg-json [value] - (doto (PGobject.) - (.setType "jsonb") - (.setValue (generate-string value)))) - -(extend-type clojure.lang.IPersistentVector - jdbc/ISQLParameter - (set-parameter [v ^java.sql.PreparedStatement stmt ^long idx] - (let [conn (.getConnection stmt) - meta (.getParameterMetaData stmt) - type-name (.getParameterTypeName meta idx)] - (if-let [elem-type (when (= (first type-name) \_) (apply str (rest type-name)))] - (.setObject stmt idx (.createArrayOf conn elem-type (to-array v))) - (.setObject stmt idx (to-pg-json v)))))) - -(extend-protocol jdbc/ISQLValue - java.util.Date - (sql-value [v] - (java.sql.Timestamp. (.getTime v))) - java.time.LocalTime - (sql-value [v] - (jt/sql-time v)) - java.time.LocalDate - (sql-value [v] - (jt/sql-date v)) - java.time.LocalDateTime - (sql-value [v] - (jt/sql-timestamp v)) - java.time.ZonedDateTime - (sql-value [v] - (jt/sql-timestamp v)) - IPersistentMap - (sql-value [value] (to-pg-json value)) - IPersistentVector - (sql-value [value] (to-pg-json value))) - diff --git a/src/clj/shapey_shifty/routes/home.clj b/src/clj/shapey_shifty/routes/home.clj index 012406e..feb8865 100644 --- a/src/clj/shapey_shifty/routes/home.clj +++ b/src/clj/shapey_shifty/routes/home.clj @@ -1,7 +1,6 @@ (ns shapey-shifty.routes.home (:require [shapey-shifty.layout :as layout] - [shapey-shifty.db.core :as db] [clojure.java.io :as io] [shapey-shifty.middleware :as middleware] [ring.util.response] diff --git a/test/clj/shapey_shifty/test/db/core.clj b/test/clj/shapey_shifty/test/db/core.clj deleted file mode 100644 index dc06cd8..0000000 --- a/test/clj/shapey_shifty/test/db/core.clj +++ /dev/null @@ -1,38 +0,0 @@ -(ns shapey-shifty.test.db.core - (:require - [shapey-shifty.db.core :refer [*db*] :as db] - [java-time.pre-java8] - [luminus-migrations.core :as migrations] - [clojure.test :refer :all] - [clojure.java.jdbc :as jdbc] - [shapey-shifty.config :refer [env]] - [mount.core :as mount])) - -(use-fixtures - :once - (fn [f] - (mount/start - #'shapey-shifty.config/env - #'shapey-shifty.db.core/*db*) - (migrations/migrate ["migrate"] (select-keys env [:database-url])) - (f))) - -(deftest test-users - (jdbc/with-db-transaction [t-conn *db*] - (jdbc/db-set-rollback-only! t-conn) - (is (= 1 (db/create-user! - t-conn - {:id "1" - :first_name "Sam" - :last_name "Smith" - :email "sam.smith@example.com" - :pass "pass"}))) - (is (= {:id "1" - :first_name "Sam" - :last_name "Smith" - :email "sam.smith@example.com" - :pass "pass" - :admin nil - :last_login nil - :is_active nil} - (db/get-user t-conn {:id "1"})))))