Skip to content

Commit

Permalink
add migration files
Browse files Browse the repository at this point in the history
  • Loading branch information
macielti committed Nov 24, 2024
1 parent c57f318 commit 0f699e5
Show file tree
Hide file tree
Showing 18 changed files with 51 additions and 35 deletions.
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ pom.xml.asc
/.prepl-port
.hgignore
.hg/
/resources/config.edn
/rango-graalvm.iml
/rango_graalvm.iml
/.clj-kondo/.cache/
/.lsp/.cache/
/resources/migration.config.edn
/.idea
/.clj-kondo/imports/
/resources/rango-ceti-fausto-lustosa.db
/resources/migration.config.edn
/resources/config.edn
/resources/config.example.edn
9 changes: 7 additions & 2 deletions project.clj
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@
[net.clojars.macielti/porteiro-component "0.4.2"]
[com.github.clj-easy/graal-build-time "1.0.5"]
[net.clojars.macielti/new-relic-component "0.2.0"]
[net.clojars.macielti/sqlite-component "0.1.0"]
[net.clojars.macielti/sqlite-component "1.1.0"]
[com.taoensso/timbre "6.6.1"]]

:profiles {:dev {:plugins [[com.github.clojure-lsp/lein-clojure-lsp "1.4.15"]
[com.github.liquidz/antq "RELEASE"]
[migratus-lein "0.7.3"]
[lein-shell "0.5.0"]]

:resource-paths ["resources" "test/resources/"]
Expand All @@ -34,10 +35,14 @@
[danlentz/clj-uuid "0.2.0"]
[hashp "0.2.2"]
[nubank/matcher-combinators "3.9.1"]
[com.github.igrishaev/pg2-migration "0.1.21"]]
[com.github.igrishaev/pg2-migration "0.1.21"]
[migratus "1.6.3"]]

:injections [(require 'hashp.core)]

:migratus {:store :database
:migration-dir "migrations/"}

:repl-options {:init-ns rango-graalvm.components}

:aliases {"clean-ns" ["clojure-lsp" "clean-ns" "--dry"] ;; check if namespaces are clean
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DROP TABLE customers;
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CREATE TABLE customers (
id UUID PRIMARY KEY,
username VARCHAR(255) NOT NULL,
name VARCHAR(255),
hashed_password VARCHAR(255) NOT NULL
);
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DROP TABLE roles;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CREATE TABLE roles (id TEXT PRIMARY KEY, customer_id TEXT NOT NULL, role TEXT NOT NULL);
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DROP TABLE menus;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CREATE TABLE menus (id UUID PRIMARY KEY, reference_date DATE NOT NULL, description TEXT NOT NULL, created_at TIMESTAMP NOT NULL);
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DROP TABLE reservations;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CREATE TABLE reservations (id UUID PRIMARY KEY, student_id UUID NOT NULL, menu_id UUID NOT NULL, created_at TIMESTAMP NOT NULL);
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DROP TABLE students;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CREATE TABLE students (id UUID PRIMARY KEY, code VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, class VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL);
4 changes: 1 addition & 3 deletions src/rango_graalvm/components.clj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
[new-relic-component.core :as component.new-relic]
[porteiro-component.admin-component :as porteiro.admin]
[porteiro-component.diplomat.http-server :as porteiro.diplomat.http-server]
[rango-graalvm.db.sqlite.config :as sqlite.config]
[rango-graalvm.diplomat.http-server :as diplomat.http-server]
[service-component.core :as component.service]
[sqlite-component.core :as component.sqlite]
Expand All @@ -25,8 +24,7 @@
:prometheus (ig/ref ::component.prometheus/prometheus)}}
::component.new-relic/new-relic {:components {:config (ig/ref ::component.config/config)
:http-client (ig/ref ::component.http-client/http-client)}}
::component.sqlite/sqlite {:schemas sqlite.config/schemas
:components {:config (ig/ref ::component.config/config)}}
::component.sqlite/sqlite {:components {:config (ig/ref ::component.config/config)}}
::porteiro.admin/admin {:components {:config (ig/ref ::component.config/config)
:sqlite (ig/ref ::component.sqlite/sqlite)}}
::component.routes/routes {:routes (concat diplomat.http-server/routes porteiro.diplomat.http-server/routes)}
Expand Down
7 changes: 0 additions & 7 deletions src/rango_graalvm/db/sqlite/config.clj

This file was deleted.

9 changes: 7 additions & 2 deletions test/integration/aux/components.clj
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,20 @@
[integrant.core :as ig]
[porteiro-component.admin-component :as porteiro.admin]
[rango-graalvm.components :as components]
[rango-graalvm.db.sqlite.config :as sqlite.config]
[service-component.core :as component.service]
[sqlite-component.core :as component.sqlite]))

(def schemas ["CREATE TABLE customers (id TEXT PRIMARY KEY, username TEXT NOT NULL, name TEXT, hashed_password TEXT NOT NULL)"
"CREATE TABLE roles (id TEXT PRIMARY KEY, customer_id TEXT NOT NULL, role TEXT NOT NULL)"
"CREATE TABLE menus (id UUID PRIMARY KEY, reference_date DATE NOT NULL, description TEXT NOT NULL, created_at TIMESTAMP NOT NULL)"
"CREATE TABLE reservations (id UUID PRIMARY KEY, student_id UUID NOT NULL, menu_id UUID NOT NULL, created_at TIMESTAMP NOT NULL)"
"CREATE TABLE students (id UUID PRIMARY KEY, code VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, class VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL)"])

(def config-test
(-> components/config
(dissoc ::component.sqlite/sqlite)
(merge {::component.config/config {:path "resources/config.example.edn"
:env :test}
::component.sqlite-mock/sqlite-mock {:schemas sqlite.config/schemas}})
::component.sqlite-mock/sqlite-mock {:schemas schemas}})
(assoc-in [::component.service/service :components :sqlite] (ig/ref ::component.sqlite-mock/sqlite-mock))
(assoc-in [::porteiro.admin/admin :components :sqlite] (ig/ref ::component.sqlite-mock/sqlite-mock))))
10 changes: 5 additions & 5 deletions test/unit/rango_graalvm/db/sqlite/menu_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
[fixtures.menu]
[java-time.api :as jt]
[matcher-combinators.test :refer [match?]]
[rango-graalvm.db.sqlite.config :as sqlite.config]
[aux.components]
[rango-graalvm.db.sqlite.menu :as database.menu]
[rango-graalvm.models.menu :as models.menu]
[schema.test :as s]))

(s/deftest insert-test
(testing "That we are able to insert a menu into the database"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(is (match? {:menu/id fixtures.menu/menu-id
:menu/created-at jt/local-date-time?
:menu/description fixtures.menu/menu-description
Expand All @@ -21,7 +21,7 @@

(s/deftest lookup-test
(testing "Should be able to query a menu by its id"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.menu/insert! fixtures.menu/menu database)
(is (match? {:menu/id fixtures.menu/menu-id
:menu/created-at jt/local-date-time?
Expand All @@ -33,7 +33,7 @@

(s/deftest all-test
(testing "Should return all menus"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.menu/insert! (test.helper.schema/generate models.menu/Menu {}) database)
(database.menu/insert! (test.helper.schema/generate models.menu/Menu {}) database)
(database.menu/insert! (test.helper.schema/generate models.menu/Menu {}) database)
Expand All @@ -45,7 +45,7 @@

(s/deftest retract-test
(testing "Should return all menus"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.menu/insert! fixtures.menu/menu database)
(database.menu/insert! (test.helper.schema/generate models.menu/Menu {}) database)
(database.menu/insert! (test.helper.schema/generate models.menu/Menu {}) database)
Expand Down
14 changes: 7 additions & 7 deletions test/unit/rango_graalvm/db/sqlite/reservation_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
[fixtures.student]
[java-time.api :as jt]
[matcher-combinators.test :refer [match?]]
[rango-graalvm.db.sqlite.config :as sqlite.config]
[aux.components]
[rango-graalvm.db.sqlite.reservation :as database.reservation]
[rango-graalvm.models.reservation :as models.reservation]
[schema.test :as s]))

(s/deftest insert-test
(testing "Should insert a reservation"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(is (match? {:reservation/id fixtures.reservation/reservation-id
:reservation/student-id fixtures.student/student-id
:reservation/menu-id fixtures.menu/menu-id
Expand All @@ -23,7 +23,7 @@

(s/deftest by-menu-test
(testing "Should insert a reservation"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.reservation/insert! fixtures.reservation/reservation database)
(database.reservation/insert! (test.helper.schema/generate models.reservation/Reservation {}) database)
(database.reservation/insert! (test.helper.schema/generate models.reservation/Reservation {}) database)
Expand All @@ -35,7 +35,7 @@
(database.reservation/by-menu (random-uuid) database))))))

(s/deftest lookup-test
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.reservation/insert! fixtures.reservation/reservation database)

(is (match? {:reservation/id fixtures.reservation/reservation-id}
Expand All @@ -44,7 +44,7 @@
(is (nil? (database.reservation/lookup (random-uuid) database)))))

(s/deftest lookup-by-student-and-menu-test
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.reservation/insert! fixtures.reservation/reservation database)
(database.reservation/insert! (test.helper.schema/generate models.reservation/Reservation {}) database)
(database.reservation/insert! (test.helper.schema/generate models.reservation/Reservation {}) database)
Expand All @@ -60,7 +60,7 @@
(is (nil? (database.reservation/lookup-by-student-and-menu (random-uuid) (random-uuid) database)))))

(s/deftest retract-test
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]

(is (match? {:reservation/id fixtures.reservation/reservation-id
:reservation/student-id fixtures.student/student-id
Expand All @@ -72,7 +72,7 @@
(database.reservation/retract! fixtures.reservation/reservation-id database)))))

(s/deftest fetch-student-reservation-by-menu-test
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.reservation/insert! fixtures.reservation/reservation database)
(database.reservation/insert! (test.helper.schema/generate models.reservation/Reservation {}) database)
(database.reservation/insert! (test.helper.schema/generate models.reservation/Reservation {}) database)
Expand Down
12 changes: 6 additions & 6 deletions test/unit/rango_graalvm/db/sqlite/student_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
[fixtures.student]
[java-time.api :as jt]
[matcher-combinators.test :refer [match?]]
[rango-graalvm.db.sqlite.config :as sqlite.config]
[aux.components]
[rango-graalvm.db.sqlite.reservation :as database.reservation]
[rango-graalvm.db.sqlite.student :as database.student]
[rango-graalvm.models.reservation :as models.reservation]
Expand All @@ -16,7 +16,7 @@

(s/deftest insert-test
(testing "Should insert a Student entity to database"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(is (match? {:student/id fixtures.student/student-id
:student/code fixtures.student/student-code
:student/name string?
Expand All @@ -26,7 +26,7 @@

(s/deftest lookup-by-code-test
(testing "Should be able to query a student by code"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.student/insert! fixtures.student/student database)

(is (match? {:student/code fixtures.student/student-code}
Expand All @@ -36,7 +36,7 @@

(s/deftest all-test
(testing "Should be able to query all students"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.student/insert! fixtures.student/student database)
(database.student/insert! (test.helper.schema/generate models.student/Student {}) database)
(database.student/insert! (test.helper.schema/generate models.student/Student {}) database)
Expand All @@ -48,7 +48,7 @@

(s/deftest by-menu-reservation-test
(testing "Should be able to query students by menu reservation"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.student/insert! fixtures.student/student database)
(database.reservation/insert! (test.helper.schema/generate models.reservation/Reservation fixtures.reservation/reservation) database)
(database.student/insert! (test.helper.schema/generate models.student/Student {}) database)
Expand All @@ -59,7 +59,7 @@

(s/deftest retract-test
(testing "Should be able to retract a student"
(let [database (component.sqlite-mock/sqlite-unit-mock sqlite.config/schemas)]
(let [database (component.sqlite-mock/sqlite-unit-mock aux.components/schemas)]
(database.student/insert! fixtures.student/student database)

(is (match? [{:next.jdbc/update-count 1}]
Expand Down

0 comments on commit 0f699e5

Please sign in to comment.