🗃️ Setup flyway

This commit is contained in:
andreas.dinauer 2025-09-14 11:08:39 +02:00
parent 29a6f9f82d
commit 22d32ea4f2
5 changed files with 48 additions and 10 deletions

View File

@ -71,6 +71,14 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-jwt-build</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-flyway</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-postgresql</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>

View File

@ -20,6 +20,7 @@ public class AccountEntity extends PanacheEntityBase
private String email;
@Column(name = "account_password")
private String password;
@Enumerated(EnumType.STRING)

View File

@ -3,16 +3,29 @@ quarkus.http.port=8089
quarkus.http.test-port=9089
%dev.quarkus.http.host=0.0.0.0
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
%dev.smallrye.jwt.sign.key.location=private.key
%dev.mp.jwt.verify.publickey.location=public.crt
mp.jwt.verify.issuer=https://tavolio.de
# Postgres
prod.quarkus.hibernate-orm.validate-in-dev-mode=false
quarkus.hibernate-orm.schema-management.strategy=none
quarkus.datasource.db-kind=postgresql
%dev.quarkus.datasource.username=postgres
%dev.quarkus.datasource.password=${DB_PASSWORD}
%dev.quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/postgres?currentSchema=iam
%prod.quarkus.datasource.username=${DB_USER}
%prod.quarkus.datasource.password=${DB_PASSWORD}
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_DATABASE}?currentSchema=${DB_SCHEMA}
# Flyway
%test.quarkus.flyway.clean-at-start=true
%dev.quarkus.flyway.clean-at-start=true
%dev.quarkus.flyway.locations=db/migration,db/dev
quarkus.flyway.migrate-at-start=true
# IAM Superuser
%test,dev.iam.user.name=tavolio
%test,dev.iam.user.password=tavolio

View File

@ -1,11 +1,4 @@
-- This file allow to write SQL commands that will be emitted in test and dev.
-- The commands are commented as their support depends of the database
-- insert into myentity (id, field) values(1, 'field-1');
-- insert into myentity (id, field) values(2, 'field-2');
-- insert into myentity (id, field) values(3, 'field-3');
-- alter sequence myentity_seq restart with 4;
INSERT INTO account (id, firstname, lastname, email, password, status)
INSERT INTO account (id, firstname, lastname, email, account_password, status)
VALUES ('66b261fe-4c5a-4728-9857-67717f02d4e1', 'Andreas', 'Dinauer', 'andreas.j.dinauer@gmail.com', '$2a$12$cdrzIY4sMFAXiz29uo9Ul.MPy0RN0FGS2yjVzb5BTe6bSijn4eGQy', 'REGISTERED');
INSERT INTO membership(id, tenant_type, tenant_id, member_role, member_since, account_id)

View File

@ -0,0 +1,23 @@
CREATE TABLE account (
email VARCHAR(255) NULL,
firstname VARCHAR(255) NULL,
id VARCHAR(255) NOT NULL,
lastname VARCHAR(255) NULL,
account_password VARCHAR(255) NULL,
status VARCHAR(255) NULL,
CONSTRAINT account_pkey PRIMARY KEY (id),
CONSTRAINT account_status_check CHECK (((status)::text = ANY ((ARRAY['INIT'::character varying, 'REGISTERED'::character varying])::text[])))
);
CREATE TABLE membership (
member_since TIMESTAMP(6) WITH TIME ZONE NOT NULL,
account_id VARCHAR(255) NOT NULL,
id VARCHAR(255) NOT NULL,
member_role VARCHAR(255) NOT NULL,
tenant_id VARCHAR(255) NOT NULL,
tenant_type VARCHAR(255) NOT NULL,
CONSTRAINT membership_member_role_check CHECK (((member_role)::text = ANY ((ARRAY['OWNER'::character varying, 'ADMIN'::character varying, 'MEMBER'::character varying])::text[]))),
CONSTRAINT membership_pkey PRIMARY KEY (id),
CONSTRAINT membership_tenant_type_check CHECK (((tenant_type)::text = ANY ((ARRAY['ORGANISATION'::character varying, 'RESTAURANT'::character varying])::text[]))),
CONSTRAINT fkd1yliqdvipm4yvq2tulbktpg6 FOREIGN KEY (account_id) REFERENCES account(id)
);