From 11d102cdae150ae0434edcb1a1d43916625f1197 Mon Sep 17 00:00:00 2001 From: Raphael Frank <04.raphael.frank@gmail.com> Date: Fri, 12 Jun 2026 11:04:25 +0200 Subject: [PATCH 1/5] add per-service schemata and unified database --- infra/docker-compose.override.yml | 6 ++ infra/docker-compose.yml | 79 +++++++------- .../team-devoops/templates/configmap-db.yaml | 16 ++- .../team-devoops/templates/deployment.yaml | 4 +- .../templates/postgres-init-configmap.yaml | 99 +++++++++++++++++ .../templates/postgres-statefulset.yaml | 10 ++ .../team-devoops/templates/secret-db.yaml | 35 +++++- infra/helm/team-devoops/values.yaml | 36 ++++++- infra/postgres/init-db.sh | 101 ++++++++++++++++++ services/spring-event/build.gradle | 2 + .../src/main/resources/application.properties | 7 ++ .../db/migration/V1__create_schemas.sql | 2 + services/spring-feedback/build.gradle | 2 + .../src/main/resources/application.properties | 7 ++ .../db/migration/V1__create_schemas.sql | 2 + services/spring-finance/build.gradle | 2 + .../src/main/resources/application.properties | 7 ++ .../db/migration/V1__create_schemas.sql | 2 + .../src/main/resources/application.properties | 3 + services/spring-member/build.gradle | 2 + .../src/main/resources/application.properties | 7 ++ .../db/migration/V1__create_schemas.sql | 2 + services/spring-organization/build.gradle | 2 + .../src/main/resources/application.properties | 7 ++ .../db/migration/V1__create_schemas.sql | 2 + 25 files changed, 394 insertions(+), 50 deletions(-) create mode 100644 infra/helm/team-devoops/templates/postgres-init-configmap.yaml create mode 100755 infra/postgres/init-db.sh create mode 100644 services/spring-event/src/main/resources/db/migration/V1__create_schemas.sql create mode 100644 services/spring-feedback/src/main/resources/db/migration/V1__create_schemas.sql create mode 100644 services/spring-finance/src/main/resources/db/migration/V1__create_schemas.sql create mode 100644 services/spring-member/src/main/resources/db/migration/V1__create_schemas.sql create mode 100644 services/spring-organization/src/main/resources/db/migration/V1__create_schemas.sql diff --git a/infra/docker-compose.override.yml b/infra/docker-compose.override.yml index fa850f7..013271a 100644 --- a/infra/docker-compose.override.yml +++ b/infra/docker-compose.override.yml @@ -11,12 +11,14 @@ # * Removes TLS (no Let's Encrypt, no HTTPS, no 443) -- local has no public DNS # * Strips the Host(...) requirement from every router so localhost works # * Disables the HTTP -> HTTPS redirect so plain http://localhost works +# * Exposes the app database on localhost:5432 for direct DB client access # # Access locally: # http://localhost/ web client # http://localhost/docs Swagger UI # http://localhost/api/v1//... APIs # http://localhost:8080 Traefik dashboard +# localhost:5432 (app_admin/app_admin_password, db: app_db) PostgreSQL services: traefik: @@ -126,6 +128,10 @@ services: environment: KC_HOSTNAME: "http://localhost:8081/auth" + app-database: + ports: + - "5432:5432" + traefik-forward-auth: labels: !override - "traefik.enable=false" diff --git a/infra/docker-compose.yml b/infra/docker-compose.yml index 99c83db..8fbcdc9 100644 --- a/infra/docker-compose.yml +++ b/infra/docker-compose.yml @@ -26,13 +26,13 @@ services: expose: - 8080 depends_on: - member-database: + app-database: condition: service_healthy environment: - - SPRING_DATASOURCE_URL=jdbc:postgresql://member-database:5432/member_db - - SPRING_DATASOURCE_USERNAME=member_user - - SPRING_DATASOURCE_PASSWORD=member_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=update + - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db + - SPRING_DATASOURCE_USERNAME=organization_user + - SPRING_DATASOURCE_PASSWORD=organization_password + - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -53,13 +53,13 @@ services: expose: - 8080 depends_on: - member-database: + app-database: condition: service_healthy environment: - - SPRING_DATASOURCE_URL=jdbc:postgresql://member-database:5432/member_db + - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db - SPRING_DATASOURCE_USERNAME=member_user - SPRING_DATASOURCE_PASSWORD=member_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=update + - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -80,13 +80,13 @@ services: expose: - 8080 depends_on: - member-database: + app-database: condition: service_healthy environment: - - SPRING_DATASOURCE_URL=jdbc:postgresql://member-database:5432/member_db - - SPRING_DATASOURCE_USERNAME=member_user - - SPRING_DATASOURCE_PASSWORD=member_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=update + - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db + - SPRING_DATASOURCE_USERNAME=event_user + - SPRING_DATASOURCE_PASSWORD=event_password + - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -107,13 +107,13 @@ services: expose: - 8080 depends_on: - member-database: + app-database: condition: service_healthy environment: - - SPRING_DATASOURCE_URL=jdbc:postgresql://member-database:5432/member_db - - SPRING_DATASOURCE_USERNAME=member_user - - SPRING_DATASOURCE_PASSWORD=member_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=update + - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db + - SPRING_DATASOURCE_USERNAME=feedback_user + - SPRING_DATASOURCE_PASSWORD=feedback_password + - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -134,13 +134,13 @@ services: expose: - 8080 depends_on: - member-database: + app-database: condition: service_healthy environment: - - SPRING_DATASOURCE_URL=jdbc:postgresql://member-database:5432/member_db - - SPRING_DATASOURCE_USERNAME=member_user - - SPRING_DATASOURCE_PASSWORD=member_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=update + - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db + - SPRING_DATASOURCE_USERNAME=finance_user + - SPRING_DATASOURCE_PASSWORD=finance_password + - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -161,13 +161,13 @@ services: expose: - 8080 depends_on: - member-database: + app-database: condition: service_healthy environment: - - SPRING_DATASOURCE_URL=jdbc:postgresql://member-database:5432/member_db - - SPRING_DATASOURCE_USERNAME=member_user - - SPRING_DATASOURCE_PASSWORD=member_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=update + - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db + - SPRING_DATASOURCE_USERNAME=letter_user + - SPRING_DATASOURCE_PASSWORD=letter_password + - SPRING_JPA_HIBERNATE_DDL_AUTO=none - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -345,19 +345,26 @@ services: networks: - keycloak - member-database: + app-database: image: postgres:15.6-alpine - container_name: member-db + container_name: app-db expose: - 5432 environment: - POSTGRES_USER: member_user - POSTGRES_PASSWORD: member_password - POSTGRES_DB: member_db + POSTGRES_USER: app_admin + POSTGRES_PASSWORD: app_admin_password + POSTGRES_DB: app_db + ORGANIZATION_USER_PASSWORD: organization_password + MEMBER_USER_PASSWORD: member_password + EVENT_USER_PASSWORD: event_password + FEEDBACK_USER_PASSWORD: feedback_password + FINANCE_USER_PASSWORD: finance_password + LETTER_USER_PASSWORD: letter_password volumes: - - member_db_data:/var/lib/postgresql/data + - app_db_data:/var/lib/postgresql/data + - ./postgres/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro healthcheck: - test: ["CMD-SHELL", "pg_isready -U member_user -d member_db"] + test: ["CMD-SHELL", "pg_isready -U app_admin -d app_db"] interval: 10s timeout: 5s retries: 5 @@ -366,7 +373,7 @@ services: - data volumes: - member_db_data: + app_db_data: keycloak_db_data: letsencrypt: diff --git a/infra/helm/team-devoops/templates/configmap-db.yaml b/infra/helm/team-devoops/templates/configmap-db.yaml index 4aa676b..593eeae 100644 --- a/infra/helm/team-devoops/templates/configmap-db.yaml +++ b/infra/helm/team-devoops/templates/configmap-db.yaml @@ -1,12 +1,18 @@ {{- if .Values.database.enabled }} +{{- range $name, $svc := .Values.services }} +{{- if $svc.db }} +{{- $dbKey := $svc.dbUser }} +{{- $dbUser := index $.Values.database.users $dbKey }} +--- apiVersion: v1 kind: ConfigMap metadata: - name: db-config + name: db-config-{{ $name }} labels: - {{- include "team-devoops.labels" (dict "name" "db-config" "root" $) | nindent 4 }} + {{- include "team-devoops.labels" (dict "name" (printf "db-config-%s" $name) "root" $) | nindent 4 }} data: - SPRING_DATASOURCE_URL: jdbc:postgresql://{{ .Values.database.host }}:{{ .Values.database.port }}/{{ .Values.database.name }} - SPRING_DATASOURCE_USERNAME: {{ .Values.database.user | quote }} - SPRING_JPA_HIBERNATE_DDL_AUTO: update + SPRING_DATASOURCE_URL: jdbc:postgresql://{{ $.Values.database.host }}:{{ $.Values.database.port }}/{{ $.Values.database.name }} + SPRING_DATASOURCE_USERNAME: {{ $dbUser.username | quote }} +{{- end }} +{{- end }} {{- end }} diff --git a/infra/helm/team-devoops/templates/deployment.yaml b/infra/helm/team-devoops/templates/deployment.yaml index 978269c..65214fc 100644 --- a/infra/helm/team-devoops/templates/deployment.yaml +++ b/infra/helm/team-devoops/templates/deployment.yaml @@ -40,9 +40,9 @@ spec: envFrom: {{- if $svc.db }} - configMapRef: - name: db-config + name: db-config-{{ $name }} - secretRef: - name: db-credentials + name: db-credentials-{{ $svc.dbUser }}-service {{- end }} {{- if $svc.envFromSecret }} - secretRef: diff --git a/infra/helm/team-devoops/templates/postgres-init-configmap.yaml b/infra/helm/team-devoops/templates/postgres-init-configmap.yaml new file mode 100644 index 0000000..004eaf8 --- /dev/null +++ b/infra/helm/team-devoops/templates/postgres-init-configmap.yaml @@ -0,0 +1,99 @@ +{{- if .Values.database.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: db-init-scripts + labels: + {{- include "team-devoops.labels" (dict "name" "db-init-scripts" "root" $) | nindent 4 }} +data: + init-db.sh: | + #!/usr/bin/env bash + # init-db.sh — runs once when the Postgres container is first initialised. + # Creates per-service users, all application schemas, and grants: + # - each service user: WRITE on its own schemas, READ (via reader role) on all + # - letter_user: READ only (no write schemas) + # + # Passwords are injected via environment variables so nothing is hardcoded. + set -euo pipefail + + DB="${POSTGRES_DB}" + ADMIN="${POSTGRES_USER}" + + psql -v ON_ERROR_STOP=1 --username "$ADMIN" --dbname "$DB" <<-EOSQL + + -- Reader role: granted to every service user so each can SELECT anywhere + CREATE ROLE reader NOLOGIN; + + -- Per-service users + CREATE USER organization_user WITH PASSWORD '${ORGANIZATION_USER_PASSWORD}'; + CREATE USER member_user WITH PASSWORD '${MEMBER_USER_PASSWORD}'; + CREATE USER event_user WITH PASSWORD '${EVENT_USER_PASSWORD}'; + CREATE USER feedback_user WITH PASSWORD '${FEEDBACK_USER_PASSWORD}'; + CREATE USER finance_user WITH PASSWORD '${FINANCE_USER_PASSWORD}'; + CREATE USER letter_user WITH PASSWORD '${LETTER_USER_PASSWORD}'; + + -- Allow all users to connect to the application database + GRANT CONNECT ON DATABASE ${DB} TO + organization_user, member_user, event_user, + feedback_user, finance_user, letter_user; + + -- All users inherit the reader role + GRANT reader TO + organization_user, member_user, event_user, + feedback_user, finance_user, letter_user; + + -- Schemas: organization + CREATE SCHEMA organization; + + -- Schemas: member + CREATE SCHEMA member; + + -- Schemas: event + CREATE SCHEMA event; + + -- Schemas: feedback + CREATE SCHEMA feedback; + + -- Schemas: finance + CREATE SCHEMA finance; + + -- Ownership + ALTER SCHEMA organization OWNER TO organization_user; + ALTER SCHEMA member OWNER TO member_user; + ALTER SCHEMA event OWNER TO event_user; + ALTER SCHEMA feedback OWNER TO feedback_user; + ALTER SCHEMA finance OWNER TO finance_user; + + -- Reader USAGE on all schemas + GRANT USAGE ON SCHEMA + organization, member, event, feedback, finance + TO reader; + + -- Reader SELECT on existing tables (defensive) + GRANT SELECT ON ALL TABLES IN SCHEMA + organization, member, event, feedback, finance + TO reader; + + -- Default privileges for future tables + ALTER DEFAULT PRIVILEGES FOR ROLE organization_user + IN SCHEMA organization + GRANT SELECT ON TABLES TO reader; + + ALTER DEFAULT PRIVILEGES FOR ROLE member_user + IN SCHEMA member + GRANT SELECT ON TABLES TO reader; + + ALTER DEFAULT PRIVILEGES FOR ROLE event_user + IN SCHEMA event + GRANT SELECT ON TABLES TO reader; + + ALTER DEFAULT PRIVILEGES FOR ROLE feedback_user + IN SCHEMA feedback + GRANT SELECT ON TABLES TO reader; + + ALTER DEFAULT PRIVILEGES FOR ROLE finance_user + IN SCHEMA finance + GRANT SELECT ON TABLES TO reader; + + EOSQL +{{- end }} diff --git a/infra/helm/team-devoops/templates/postgres-statefulset.yaml b/infra/helm/team-devoops/templates/postgres-statefulset.yaml index ec9fb96..e8b8203 100644 --- a/infra/helm/team-devoops/templates/postgres-statefulset.yaml +++ b/infra/helm/team-devoops/templates/postgres-statefulset.yaml @@ -37,9 +37,14 @@ spec: secretKeyRef: name: db-credentials key: POSTGRES_PASSWORD + envFrom: + - secretRef: + name: db-init-credentials volumeMounts: - name: data mountPath: /var/lib/postgresql/data + - name: init-scripts + mountPath: /docker-entrypoint-initdb.d readinessProbe: exec: command: ["pg_isready", "-U", "{{ .Values.database.user }}", "-d", "{{ .Values.database.name }}"] @@ -52,6 +57,11 @@ spec: periodSeconds: 20 resources: {{- toYaml .Values.database.resources | nindent 12 }} + volumes: + - name: init-scripts + configMap: + name: db-init-scripts + defaultMode: 0755 volumeClaimTemplates: - metadata: name: data diff --git a/infra/helm/team-devoops/templates/secret-db.yaml b/infra/helm/team-devoops/templates/secret-db.yaml index e5e8598..9eb50cc 100644 --- a/infra/helm/team-devoops/templates/secret-db.yaml +++ b/infra/helm/team-devoops/templates/secret-db.yaml @@ -1,4 +1,6 @@ {{- if .Values.database.enabled }} +--- +# Admin credentials used by the Postgres StatefulSet itself apiVersion: v1 kind: Secret metadata: @@ -7,7 +9,36 @@ metadata: {{- include "team-devoops.labels" (dict "name" "db-credentials" "root" $) | nindent 4 }} type: Opaque stringData: - # Single source of truth shared by Postgres and the Spring services. - SPRING_DATASOURCE_PASSWORD: {{ .Values.database.password | quote }} POSTGRES_PASSWORD: {{ .Values.database.password | quote }} +--- +# Init-script credentials: all service passwords injected as env vars into the +# Postgres init container so init-db.sh can create per-service users. +apiVersion: v1 +kind: Secret +metadata: + name: db-init-credentials + labels: + {{- include "team-devoops.labels" (dict "name" "db-init-credentials" "root" $) | nindent 4 }} +type: Opaque +stringData: + ORGANIZATION_USER_PASSWORD: {{ .Values.database.users.organization.password | quote }} + MEMBER_USER_PASSWORD: {{ .Values.database.users.member.password | quote }} + EVENT_USER_PASSWORD: {{ .Values.database.users.event.password | quote }} + FEEDBACK_USER_PASSWORD: {{ .Values.database.users.feedback.password | quote }} + FINANCE_USER_PASSWORD: {{ .Values.database.users.finance.password | quote }} + LETTER_USER_PASSWORD: {{ .Values.database.users.letter.password | quote }} +--- +# Per-service datasource password secrets +{{- range $key, $user := .Values.database.users }} +apiVersion: v1 +kind: Secret +metadata: + name: db-credentials-{{ $key }}-service + labels: + {{- include "team-devoops.labels" (dict "name" (printf "db-credentials-%s-service" $key) "root" $) | nindent 4 }} +type: Opaque +stringData: + SPRING_DATASOURCE_PASSWORD: {{ $user.password | quote }} +--- +{{- end }} {{- end }} diff --git a/infra/helm/team-devoops/values.yaml b/infra/helm/team-devoops/values.yaml index 521f4d3..dc771c3 100644 --- a/infra/helm/team-devoops/values.yaml +++ b/infra/helm/team-devoops/values.yaml @@ -16,15 +16,35 @@ global: imagePullSecrets: - name: ghcr-pull -# Shared in-cluster Postgres database (mirrors the single compose member_db). +# Shared in-cluster Postgres database — single DB, multiple schemas. database: enabled: true - name: member_db - user: member_user + name: app_db + user: app_admin # Rendered into a Secret (db-credentials). Override in CI/prod via --set. - password: member_password - host: member-database + password: app_admin_password + host: app-database port: 5432 + # Per-service users. Override passwords via --set in CI/prod. + users: + organization: + username: organization_user + password: organization_password + member: + username: member_user + password: member_password + event: + username: event_user + password: event_password + feedback: + username: feedback_user + password: feedback_password + finance: + username: finance_user + password: finance_password + letter: + username: letter_user + password: letter_password image: postgres:15.6-alpine storageSize: 5Gi resources: @@ -143,6 +163,7 @@ services: path: /api/v1/organization port: 8080 db: true + dbUser: organization health: /actuator/health stripPrefix: true env: @@ -153,6 +174,7 @@ services: path: /api/v1/members port: 8080 db: true + dbUser: member health: /actuator/health stripPrefix: true env: @@ -163,6 +185,7 @@ services: path: /api/v1/events port: 8080 db: true + dbUser: event health: /actuator/health stripPrefix: true env: @@ -173,6 +196,7 @@ services: path: /api/v1/feedback port: 8080 db: true + dbUser: feedback health: /actuator/health stripPrefix: true env: @@ -183,6 +207,7 @@ services: path: /api/v1/finance port: 8080 db: true + dbUser: finance health: /actuator/health stripPrefix: true env: @@ -193,6 +218,7 @@ services: path: /api/v1/letters port: 8080 db: true + dbUser: letter health: /actuator/health stripPrefix: true env: diff --git a/infra/postgres/init-db.sh b/infra/postgres/init-db.sh new file mode 100755 index 0000000..22bac08 --- /dev/null +++ b/infra/postgres/init-db.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash +# init-db.sh — runs once when the Postgres container is first initialised. +# Creates per-service users, all application schemas, and grants: +# - each service user: WRITE on its own schemas, READ (via reader role) on all +# - letter_user: READ only (no write schemas) +# +# Passwords are injected via environment variables so nothing is hardcoded. +# Required env vars (all must be set): +# ORGANIZATION_USER_PASSWORD +# MEMBER_USER_PASSWORD +# EVENT_USER_PASSWORD +# FEEDBACK_USER_PASSWORD +# FINANCE_USER_PASSWORD +# LETTER_USER_PASSWORD +set -euo pipefail + +DB="${POSTGRES_DB}" +ADMIN="${POSTGRES_USER}" + +psql -v ON_ERROR_STOP=1 --username "$ADMIN" --dbname "$DB" <<-EOSQL + +-- ------------------------------------------------------------------------- +-- Reader role: granted to every service user so each can SELECT anywhere +-- ------------------------------------------------------------------------- +CREATE ROLE reader NOLOGIN; + +-- ------------------------------------------------------------------------- +-- Per-service users +-- ------------------------------------------------------------------------- +CREATE USER organization_user WITH PASSWORD '${ORGANIZATION_USER_PASSWORD}'; +CREATE USER member_user WITH PASSWORD '${MEMBER_USER_PASSWORD}'; +CREATE USER event_user WITH PASSWORD '${EVENT_USER_PASSWORD}'; +CREATE USER feedback_user WITH PASSWORD '${FEEDBACK_USER_PASSWORD}'; +CREATE USER finance_user WITH PASSWORD '${FINANCE_USER_PASSWORD}'; +CREATE USER letter_user WITH PASSWORD '${LETTER_USER_PASSWORD}'; + +-- Allow all users to connect to the application database +GRANT CONNECT ON DATABASE ${DB} TO + organization_user, member_user, event_user, + feedback_user, finance_user, letter_user; + +-- All users inherit the reader role +GRANT reader TO + organization_user, member_user, event_user, + feedback_user, finance_user, letter_user; + +-- ------------------------------------------------------------------------- +-- Schemas (one per service) +-- ------------------------------------------------------------------------- +CREATE SCHEMA organization; +CREATE SCHEMA member; +CREATE SCHEMA event; +CREATE SCHEMA feedback; +CREATE SCHEMA finance; + +-- ------------------------------------------------------------------------- +-- Ownership: each service user owns its schema +-- ------------------------------------------------------------------------- +ALTER SCHEMA organization OWNER TO organization_user; +ALTER SCHEMA member OWNER TO member_user; +ALTER SCHEMA event OWNER TO event_user; +ALTER SCHEMA feedback OWNER TO feedback_user; +ALTER SCHEMA finance OWNER TO finance_user; + +-- ------------------------------------------------------------------------- +-- Reader role: USAGE on all schemas + SELECT on all current tables +-- ------------------------------------------------------------------------- +GRANT USAGE ON SCHEMA + organization, member, event, feedback, finance +TO reader; + +-- SELECT on any tables that already exist (none yet, but defensive) +GRANT SELECT ON ALL TABLES IN SCHEMA + organization, member, event, feedback, finance +TO reader; + +-- ------------------------------------------------------------------------- +-- Default privileges: future tables created by each service user are +-- automatically SELECT-able by the reader role +-- ------------------------------------------------------------------------- +ALTER DEFAULT PRIVILEGES FOR ROLE organization_user + IN SCHEMA organization + GRANT SELECT ON TABLES TO reader; + +ALTER DEFAULT PRIVILEGES FOR ROLE member_user + IN SCHEMA member + GRANT SELECT ON TABLES TO reader; + +ALTER DEFAULT PRIVILEGES FOR ROLE event_user + IN SCHEMA event + GRANT SELECT ON TABLES TO reader; + +ALTER DEFAULT PRIVILEGES FOR ROLE feedback_user + IN SCHEMA feedback + GRANT SELECT ON TABLES TO reader; + +ALTER DEFAULT PRIVILEGES FOR ROLE finance_user + IN SCHEMA finance + GRANT SELECT ON TABLES TO reader; + +EOSQL diff --git a/services/spring-event/build.gradle b/services/spring-event/build.gradle index 3cb821e..7977eb2 100644 --- a/services/spring-event/build.gradle +++ b/services/spring-event/build.gradle @@ -43,6 +43,8 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.flywaydb:flyway-core' + implementation 'org.flywaydb:flyway-database-postgresql' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-actuator' diff --git a/services/spring-event/src/main/resources/application.properties b/services/spring-event/src/main/resources/application.properties index 670e53c..fdb1784 100644 --- a/services/spring-event/src/main/resources/application.properties +++ b/services/spring-event/src/main/resources/application.properties @@ -2,3 +2,10 @@ spring.application.name=event-service spring.security.oauth2.resourceserver.jwt.issuer-uri=http://localhost:8081/auth/realms/devops spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://keycloak:8080/auth/realms/devops/protocol/openid-connect/certs + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.properties.hibernate.default_schema=event + +spring.flyway.default-schema=event +spring.flyway.schemas=event +spring.flyway.create-schemas=true diff --git a/services/spring-event/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-event/src/main/resources/db/migration/V1__create_schemas.sql new file mode 100644 index 0000000..160c533 --- /dev/null +++ b/services/spring-event/src/main/resources/db/migration/V1__create_schemas.sql @@ -0,0 +1,2 @@ +-- V1: Ensure event schema exists (defensive, already created by DB init script) +CREATE SCHEMA IF NOT EXISTS event; diff --git a/services/spring-feedback/build.gradle b/services/spring-feedback/build.gradle index 2737002..2913678 100644 --- a/services/spring-feedback/build.gradle +++ b/services/spring-feedback/build.gradle @@ -43,6 +43,8 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.flywaydb:flyway-core' + implementation 'org.flywaydb:flyway-database-postgresql' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-actuator' diff --git a/services/spring-feedback/src/main/resources/application.properties b/services/spring-feedback/src/main/resources/application.properties index d0381b2..3017a6e 100644 --- a/services/spring-feedback/src/main/resources/application.properties +++ b/services/spring-feedback/src/main/resources/application.properties @@ -2,3 +2,10 @@ spring.application.name=feedback-service spring.security.oauth2.resourceserver.jwt.issuer-uri=http://localhost:8081/auth/realms/devops spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://keycloak:8080/auth/realms/devops/protocol/openid-connect/certs + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.properties.hibernate.default_schema=feedback + +spring.flyway.default-schema=feedback +spring.flyway.schemas=feedback +spring.flyway.create-schemas=true diff --git a/services/spring-feedback/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-feedback/src/main/resources/db/migration/V1__create_schemas.sql new file mode 100644 index 0000000..9bbc16c --- /dev/null +++ b/services/spring-feedback/src/main/resources/db/migration/V1__create_schemas.sql @@ -0,0 +1,2 @@ +-- V1: Ensure feedback schema exists (defensive, already created by DB init script) +CREATE SCHEMA IF NOT EXISTS feedback; diff --git a/services/spring-finance/build.gradle b/services/spring-finance/build.gradle index 828b58a..7083d41 100644 --- a/services/spring-finance/build.gradle +++ b/services/spring-finance/build.gradle @@ -43,6 +43,8 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.flywaydb:flyway-core' + implementation 'org.flywaydb:flyway-database-postgresql' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-actuator' diff --git a/services/spring-finance/src/main/resources/application.properties b/services/spring-finance/src/main/resources/application.properties index e8af8a3..dcdce07 100644 --- a/services/spring-finance/src/main/resources/application.properties +++ b/services/spring-finance/src/main/resources/application.properties @@ -2,3 +2,10 @@ spring.application.name=finance-service spring.security.oauth2.resourceserver.jwt.issuer-uri=http://localhost:8081/auth/realms/devops spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://keycloak:8080/auth/realms/devops/protocol/openid-connect/certs + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.properties.hibernate.default_schema=finance + +spring.flyway.default-schema=finance +spring.flyway.schemas=finance +spring.flyway.create-schemas=true diff --git a/services/spring-finance/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-finance/src/main/resources/db/migration/V1__create_schemas.sql new file mode 100644 index 0000000..8ec4865 --- /dev/null +++ b/services/spring-finance/src/main/resources/db/migration/V1__create_schemas.sql @@ -0,0 +1,2 @@ +-- V1: Ensure finance schema exists (defensive, already created by DB init script) +CREATE SCHEMA IF NOT EXISTS finance; diff --git a/services/spring-letter/src/main/resources/application.properties b/services/spring-letter/src/main/resources/application.properties index d550a7f..a374c20 100644 --- a/services/spring-letter/src/main/resources/application.properties +++ b/services/spring-letter/src/main/resources/application.properties @@ -2,3 +2,6 @@ spring.application.name=letter-service spring.security.oauth2.resourceserver.jwt.issuer-uri=http://localhost:8081/auth/realms/devops spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://keycloak:8080/auth/realms/devops/protocol/openid-connect/certs + +spring.flyway.enabled=false +spring.jpa.hibernate.ddl-auto=none diff --git a/services/spring-member/build.gradle b/services/spring-member/build.gradle index b5d0952..ccf156a 100644 --- a/services/spring-member/build.gradle +++ b/services/spring-member/build.gradle @@ -43,6 +43,8 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.flywaydb:flyway-core' + implementation 'org.flywaydb:flyway-database-postgresql' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-actuator' diff --git a/services/spring-member/src/main/resources/application.properties b/services/spring-member/src/main/resources/application.properties index acd890e..68f33fc 100644 --- a/services/spring-member/src/main/resources/application.properties +++ b/services/spring-member/src/main/resources/application.properties @@ -2,3 +2,10 @@ spring.application.name=member-service spring.security.oauth2.resourceserver.jwt.issuer-uri=http://localhost:8081/auth/realms/devops spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://keycloak:8080/auth/realms/devops/protocol/openid-connect/certs + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.properties.hibernate.default_schema=member + +spring.flyway.default-schema=member +spring.flyway.schemas=member +spring.flyway.create-schemas=true diff --git a/services/spring-member/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-member/src/main/resources/db/migration/V1__create_schemas.sql new file mode 100644 index 0000000..6e48825 --- /dev/null +++ b/services/spring-member/src/main/resources/db/migration/V1__create_schemas.sql @@ -0,0 +1,2 @@ +-- V1: Ensure member schema exists (defensive, already created by DB init script) +CREATE SCHEMA IF NOT EXISTS member; diff --git a/services/spring-organization/build.gradle b/services/spring-organization/build.gradle index cd032ae..5b70d43 100644 --- a/services/spring-organization/build.gradle +++ b/services/spring-organization/build.gradle @@ -43,6 +43,8 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.flywaydb:flyway-core' + implementation 'org.flywaydb:flyway-database-postgresql' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-actuator' diff --git a/services/spring-organization/src/main/resources/application.properties b/services/spring-organization/src/main/resources/application.properties index 8f1688e..0f5a352 100644 --- a/services/spring-organization/src/main/resources/application.properties +++ b/services/spring-organization/src/main/resources/application.properties @@ -2,3 +2,10 @@ spring.application.name=organization-service spring.security.oauth2.resourceserver.jwt.issuer-uri=http://localhost:8081/auth/realms/devops spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://keycloak:8080/auth/realms/devops/protocol/openid-connect/certs + +spring.jpa.hibernate.ddl-auto=validate +spring.jpa.properties.hibernate.default_schema=organization + +spring.flyway.default-schema=organization +spring.flyway.schemas=organization +spring.flyway.create-schemas=true diff --git a/services/spring-organization/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-organization/src/main/resources/db/migration/V1__create_schemas.sql new file mode 100644 index 0000000..7498826 --- /dev/null +++ b/services/spring-organization/src/main/resources/db/migration/V1__create_schemas.sql @@ -0,0 +1,2 @@ +-- V1: Ensure organization schema exists (defensive, already created by DB init script) +CREATE SCHEMA IF NOT EXISTS organization; From 183cb3382b3b685c918284f0e1ba807e63497e11 Mon Sep 17 00:00:00 2001 From: Raphael Frank <04.raphael.frank@gmail.com> Date: Fri, 12 Jun 2026 14:57:53 +0200 Subject: [PATCH 2/5] add entity classes for service tables --- api/openapi.yaml | 1 + lombok-1.18.46.jar | Bin 0 -> 266240 bytes services/py-genai-helper/generated/models.py | 4 +- services/spring-event/build.gradle | 2 + .../eventservice/entity/Attendance.java | 37 ++++++++++++ .../devoops/eventservice/entity/Event.java | 57 ++++++++++++++++++ .../eventservice/entity/SportEvent.java | 37 ++++++++++++ .../eventservice/entity/TeamEvent.java | 37 ++++++++++++ services/spring-feedback/build.gradle | 2 + .../feedbackservice/entity/Feedback.java | 45 ++++++++++++++ services/spring-finance/build.gradle | 2 + .../financeservice/entity/Transaction.java | 47 +++++++++++++++ services/spring-letter/build.gradle | 2 + services/spring-member/build.gradle | 2 + services/spring-member/gradle.properties | 0 .../memberservice/model/MemberCreate.java | 15 ++--- .../devoops/memberservice/entity/Member.java | 49 +++++++++++++++ services/spring-organization/build.gradle | 2 + .../organizationservice/entity/Director.java | 37 ++++++++++++ .../organizationservice/entity/Sport.java | 35 +++++++++++ .../organizationservice/entity/Team.java | 52 ++++++++++++++++ .../organizationservice/entity/Trainee.java | 37 ++++++++++++ .../organizationservice/entity/Trainer.java | 37 ++++++++++++ web-client/src/api.ts | 2 +- 24 files changed, 531 insertions(+), 10 deletions(-) create mode 100644 lombok-1.18.46.jar create mode 100644 services/spring-event/src/main/java/tum/devoops/eventservice/entity/Attendance.java create mode 100644 services/spring-event/src/main/java/tum/devoops/eventservice/entity/Event.java create mode 100644 services/spring-event/src/main/java/tum/devoops/eventservice/entity/SportEvent.java create mode 100644 services/spring-event/src/main/java/tum/devoops/eventservice/entity/TeamEvent.java create mode 100644 services/spring-feedback/src/main/java/tum/devoops/feedbackservice/entity/Feedback.java create mode 100644 services/spring-finance/src/main/java/tum/devoops/financeservice/entity/Transaction.java create mode 100644 services/spring-member/gradle.properties create mode 100644 services/spring-member/src/main/java/tum/devoops/memberservice/entity/Member.java create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Director.java create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Sport.java create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Team.java create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Trainee.java create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Trainer.java diff --git a/api/openapi.yaml b/api/openapi.yaml index eace1e7..92163ec 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -1296,6 +1296,7 @@ components: required: - first_name - last_name + - email description: Data transfer object for creating a new Member. Event: type: object diff --git a/lombok-1.18.46.jar b/lombok-1.18.46.jar new file mode 100644 index 0000000000000000000000000000000000000000..96d09c05503acff9783e50b02c5eea1abe2dd86b GIT binary patch literal 266240 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
tw(M_BDz&)ae3phI=R5}&tBHbh!dR}3)~H(7>K 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 -*gj3p8Nn}dd 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 literal 0 HcmV?d00001 diff --git a/services/py-genai-helper/generated/models.py b/services/py-genai-helper/generated/models.py index 2fb651e..5b07de0 100644 --- a/services/py-genai-helper/generated/models.py +++ b/services/py-genai-helper/generated/models.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: openapi.yaml -# timestamp: 2026-06-03T15:08:51+00:00 +# timestamp: 2026-06-12T12:58:15+00:00 from __future__ import annotations from pydantic import AwareDatetime, BaseModel, Field @@ -98,7 +98,7 @@ class MemberPartialUpdate(BaseModel): class MemberCreate(BaseModel): first_name: str last_name: str - email: str | None = None + email: str birthday: date | None = None phone_number: str | None = None address: str | None = None diff --git a/services/spring-event/build.gradle b/services/spring-event/build.gradle index 7977eb2..36ed041 100644 --- a/services/spring-event/build.gradle +++ b/services/spring-event/build.gradle @@ -42,6 +42,8 @@ repositories { } dependencies { + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.flywaydb:flyway-core' implementation 'org.flywaydb:flyway-database-postgresql' diff --git a/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Attendance.java b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Attendance.java new file mode 100644 index 0000000..5f864dc --- /dev/null +++ b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Attendance.java @@ -0,0 +1,37 @@ +package tum.devoops.eventservice.entity; + +import java.io.Serializable; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "event", name = "attendances") +@Getter @Setter @NoArgsConstructor @AllArgsConstructor +public class Attendance { + + // Composite PK: (event_id, member_id). + // event_id references event.event(id). + // member_id references member.member(id) — FK added in V3 migration. + @EmbeddedId + private Id id; + + @Embeddable + @Data @NoArgsConstructor @AllArgsConstructor + public static class Id implements Serializable { + @Column(name = "event_id", nullable = false) + private UUID eventId; + + @Column(name = "member_id", nullable = false) + private UUID memberId; + } +} diff --git a/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Event.java b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Event.java new file mode 100644 index 0000000..3d18124 --- /dev/null +++ b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Event.java @@ -0,0 +1,57 @@ +package tum.devoops.eventservice.entity; + +import java.time.Instant; +import java.util.List; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "event", name = "events") +@Getter @Setter @NoArgsConstructor +public class Event { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + @Column(name = "id", nullable = false, updatable = false) + private UUID id; + + @Column(name = "name", nullable = false) + private String name; + + @Column(name = "description", columnDefinition = "TEXT") + private String description; + + @Column(name = "start_time", nullable = false) + private Instant startTime; + + @Column(name = "end_time", nullable = false) + private Instant endTime; + + // UUID of the member who created this event. + // FK to member.member(id) added in V3 migration. + @Column(name = "creator_id", nullable = false) + private UUID creatorId; + + @OneToMany + @JoinColumn(name = "event_id", referencedColumnName = "id", nullable = false) + private List attendees; + + @OneToMany + @JoinColumn(name = "event_id", referencedColumnName = "id", nullable = false) + private List sportsLinked; + + @OneToMany + @JoinColumn(name = "event_id", referencedColumnName = "id", nullable = false) + private List teamsLinked; +} diff --git a/services/spring-event/src/main/java/tum/devoops/eventservice/entity/SportEvent.java b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/SportEvent.java new file mode 100644 index 0000000..71971ba --- /dev/null +++ b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/SportEvent.java @@ -0,0 +1,37 @@ +package tum.devoops.eventservice.entity; + +import java.io.Serializable; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "event", name = "sport_events") +@Getter @Setter @NoArgsConstructor @AllArgsConstructor +public class SportEvent { + + // Composite PK: (event_id, sport_name). + // event_id references event.event(id). + // sport_name references organization.sport(name) — FK added in V3 migration. + @EmbeddedId + private Id id; + + @Embeddable + @Data @NoArgsConstructor @AllArgsConstructor + public static class Id implements Serializable { + @Column(name = "event_id", nullable = false) + private UUID eventId; + + @Column(name = "sport_name", nullable = false) + private String sportName; + } +} diff --git a/services/spring-event/src/main/java/tum/devoops/eventservice/entity/TeamEvent.java b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/TeamEvent.java new file mode 100644 index 0000000..fe385f3 --- /dev/null +++ b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/TeamEvent.java @@ -0,0 +1,37 @@ +package tum.devoops.eventservice.entity; + +import java.io.Serializable; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "event", name = "team_events") +@Getter @Setter @NoArgsConstructor @AllArgsConstructor +public class TeamEvent { + + // Composite PK: (event_id, team_id). + // event_id references event.event(id). + // team_id references organization.team(id) — FK added in V3 migration. + @EmbeddedId + private Id id; + + @Embeddable + @Data @NoArgsConstructor @AllArgsConstructor + public static class Id implements Serializable { + @Column(name = "event_id", nullable = false) + private UUID eventId; + + @Column(name = "team_id", nullable = false) + private UUID teamId; + } +} diff --git a/services/spring-feedback/build.gradle b/services/spring-feedback/build.gradle index 2913678..293992f 100644 --- a/services/spring-feedback/build.gradle +++ b/services/spring-feedback/build.gradle @@ -42,6 +42,8 @@ repositories { } dependencies { + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.flywaydb:flyway-core' implementation 'org.flywaydb:flyway-database-postgresql' diff --git a/services/spring-feedback/src/main/java/tum/devoops/feedbackservice/entity/Feedback.java b/services/spring-feedback/src/main/java/tum/devoops/feedbackservice/entity/Feedback.java new file mode 100644 index 0000000..17d3022 --- /dev/null +++ b/services/spring-feedback/src/main/java/tum/devoops/feedbackservice/entity/Feedback.java @@ -0,0 +1,45 @@ +package tum.devoops.feedbackservice.entity; + +import java.time.Instant; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "feedback", name = "feedback") +@Getter @Setter @NoArgsConstructor +public class Feedback { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + @Column(name = "id", nullable = false, updatable = false) + private UUID id; + + // FK to event.event(id) added in V3 migration. + @Column(name = "event_id", nullable = false) + private UUID eventId; + + // UUID of the member this feedback is about. + // FK to member.member(id) added in V3 migration. + @Column(name = "member_id", nullable = false) + private UUID memberId; + + // UUID of the member who wrote this feedback. + // FK to member.member(id) added in V3 migration. + @Column(name = "creator_id", nullable = false) + private UUID creatorId; + + @Column(name = "created_at", nullable = false) + private Instant createdAt; + + @Column(name = "feedback", nullable = false, columnDefinition = "TEXT") + private String feedback; +} diff --git a/services/spring-finance/build.gradle b/services/spring-finance/build.gradle index 7083d41..4e959c6 100644 --- a/services/spring-finance/build.gradle +++ b/services/spring-finance/build.gradle @@ -42,6 +42,8 @@ repositories { } dependencies { + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.flywaydb:flyway-core' implementation 'org.flywaydb:flyway-database-postgresql' diff --git a/services/spring-finance/src/main/java/tum/devoops/financeservice/entity/Transaction.java b/services/spring-finance/src/main/java/tum/devoops/financeservice/entity/Transaction.java new file mode 100644 index 0000000..5e96766 --- /dev/null +++ b/services/spring-finance/src/main/java/tum/devoops/financeservice/entity/Transaction.java @@ -0,0 +1,47 @@ +package tum.devoops.financeservice.entity; + +import java.time.Instant; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "finance", name = "transactions") +@Getter @Setter @NoArgsConstructor +public class Transaction { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + @Column(name = "id", nullable = false, updatable = false) + private UUID id; + + // FK to member.member(id) added in V3 migration. + @Column(name = "member_id", nullable = false) + private UUID memberId; + + // UUID of the member who created this transaction. + // FK to member.member(id) added in V3 migration. + @Column(name = "creator_id", nullable = false) + private UUID creatorId; + + // Amount in cents (e.g. 1000 = €10.00). Positive = credit, negative = debit. + @Column(name = "amount_cents", nullable = false) + private int amountCents; + + @Column(name = "created_at", nullable = false) + private Instant createdAt; + + @Column(name = "title", nullable = false) + private String title; + + @Column(name = "description", nullable = false, columnDefinition = "TEXT") + private String description; +} diff --git a/services/spring-letter/build.gradle b/services/spring-letter/build.gradle index b057c66..5726a04 100644 --- a/services/spring-letter/build.gradle +++ b/services/spring-letter/build.gradle @@ -42,6 +42,8 @@ repositories { } dependencies { + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' diff --git a/services/spring-member/build.gradle b/services/spring-member/build.gradle index ccf156a..70965ad 100644 --- a/services/spring-member/build.gradle +++ b/services/spring-member/build.gradle @@ -42,6 +42,8 @@ repositories { } dependencies { + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.flywaydb:flyway-core' implementation 'org.flywaydb:flyway-database-postgresql' diff --git a/services/spring-member/gradle.properties b/services/spring-member/gradle.properties new file mode 100644 index 0000000..e69de29 diff --git a/services/spring-member/src/generated/java/tum/devoops/memberservice/model/MemberCreate.java b/services/spring-member/src/generated/java/tum/devoops/memberservice/model/MemberCreate.java index 3504d27..c4c2cac 100644 --- a/services/spring-member/src/generated/java/tum/devoops/memberservice/model/MemberCreate.java +++ b/services/spring-member/src/generated/java/tum/devoops/memberservice/model/MemberCreate.java @@ -28,7 +28,7 @@ public class MemberCreate { private String lastName; - private @Nullable String email; + private String email; @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) private @Nullable LocalDate birthday; @@ -46,9 +46,10 @@ public MemberCreate() { /** * Constructor with only required parameters */ - public MemberCreate(String firstName, String lastName) { + public MemberCreate(String firstName, String lastName, String email) { this.firstName = firstName; this.lastName = lastName; + this.email = email; } public MemberCreate firstName(String firstName) { @@ -91,7 +92,7 @@ public void setLastName(String lastName) { this.lastName = lastName; } - public MemberCreate email(@Nullable String email) { + public MemberCreate email(String email) { this.email = email; return this; } @@ -100,14 +101,14 @@ public MemberCreate email(@Nullable String email) { * Get email * @return email */ - - @Schema(name = "email", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull + @Schema(name = "email", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("email") - public @Nullable String getEmail() { + public String getEmail() { return email; } - public void setEmail(@Nullable String email) { + public void setEmail(String email) { this.email = email; } diff --git a/services/spring-member/src/main/java/tum/devoops/memberservice/entity/Member.java b/services/spring-member/src/main/java/tum/devoops/memberservice/entity/Member.java new file mode 100644 index 0000000..0b801c7 --- /dev/null +++ b/services/spring-member/src/main/java/tum/devoops/memberservice/entity/Member.java @@ -0,0 +1,49 @@ +package tum.devoops.memberservice.entity; + +import java.time.LocalDate; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "member", name = "members") +@Getter @Setter @NoArgsConstructor +public class Member { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + @Column(name = "id", nullable = false, updatable = false) + private UUID id; + + @Column(name = "first_name", nullable = false) + private String firstName; + + @Column(name = "last_name", nullable = false) + private String lastName; + + @Column(name = "email", nullable = false, unique = true) + private String email; + + @Column(name = "birthday", nullable = true) + private LocalDate birthday; + + @Column(name = "phone_number", nullable = true) + private String phoneNumber; + + @Column(name = "address", nullable = true) + private String address; + + @Column(name = "joining_date", nullable = false) + private LocalDate joiningDate; + + @Column(name = "information", nullable = true, columnDefinition = "TEXT") + private String information; +} diff --git a/services/spring-organization/build.gradle b/services/spring-organization/build.gradle index 5b70d43..b5aeca9 100644 --- a/services/spring-organization/build.gradle +++ b/services/spring-organization/build.gradle @@ -42,6 +42,8 @@ repositories { } dependencies { + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.flywaydb:flyway-core' implementation 'org.flywaydb:flyway-database-postgresql' diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Director.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Director.java new file mode 100644 index 0000000..f0a6844 --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Director.java @@ -0,0 +1,37 @@ +package tum.devoops.organizationservice.entity; + +import java.io.Serializable; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "organization", name = "directors") +@Getter @Setter @NoArgsConstructor @AllArgsConstructor +public class Director { + + // Composite PK: (sport_name, member_id). + // sport_name references organization.sport(name). + // member_id references member.member(id) — FK added in V3 migration. + @EmbeddedId + private Id id; + + @Embeddable + @Data @NoArgsConstructor @AllArgsConstructor + public static class Id implements Serializable { + @Column(name = "sport_name", nullable = false) + private String sportName; + + @Column(name = "member_id", nullable = false) + private UUID memberId; + } +} diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Sport.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Sport.java new file mode 100644 index 0000000..e4c21e9 --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Sport.java @@ -0,0 +1,35 @@ +package tum.devoops.organizationservice.entity; + +import java.time.LocalDate; +import java.util.List; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "organization", name = "sports") +@Getter @Setter @NoArgsConstructor +public class Sport { + + @Id + @Column(name = "name", nullable = false) + private String name; + + @Column(name = "description", columnDefinition = "TEXT") + private String description; + + @Column(name = "created_at", nullable = false) + private LocalDate createdAt; + + // Each Director row links this sport to a member (director role). + @OneToMany + @JoinColumn(name = "sport_name", referencedColumnName = "name", nullable = false) + private List directors; +} diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Team.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Team.java new file mode 100644 index 0000000..2ba1c6b --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Team.java @@ -0,0 +1,52 @@ +package tum.devoops.organizationservice.entity; + +import java.time.LocalDate; +import java.util.List; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "organization", name = "teams") +@Getter @Setter @NoArgsConstructor +public class Team { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + @Column(name = "id", nullable = false, updatable = false) + private UUID id; + + @Column(name = "name", nullable = false) + private String name; + + @Column(name = "description", nullable = true, columnDefinition = "TEXT") + private String description; + + @Column(name = "created_at", nullable = false) + private LocalDate createdAt; + + @Column(name = "address") + private String address; + + // FK to organization.sport(name). REFERENCES constraint added in V3 migration. + @Column(name = "sport_name", nullable = false) + private String sportName; + + @OneToMany + @JoinColumn(name = "team_id", referencedColumnName = "id", nullable = false) + private List trainers; + + @OneToMany + @JoinColumn(name = "team_id", referencedColumnName = "id", nullable = false) + private List trainees; +} diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Trainee.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Trainee.java new file mode 100644 index 0000000..634e6dc --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Trainee.java @@ -0,0 +1,37 @@ +package tum.devoops.organizationservice.entity; + +import java.io.Serializable; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "organization", name = "trainees") +@Getter @Setter @NoArgsConstructor @AllArgsConstructor +public class Trainee { + + // Composite PK: (team_id, member_id). + // team_id references organization.team(id). + // member_id references member.member(id) — FK added in V3 migration. + @EmbeddedId + private Id id; + + @Embeddable + @Data @NoArgsConstructor @AllArgsConstructor + public static class Id implements Serializable { + @Column(name = "team_id", nullable = false) + private UUID teamId; + + @Column(name = "member_id", nullable = false) + private UUID memberId; + } +} diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Trainer.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Trainer.java new file mode 100644 index 0000000..ce5d052 --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Trainer.java @@ -0,0 +1,37 @@ +package tum.devoops.organizationservice.entity; + +import java.io.Serializable; +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(schema = "organization", name = "trainers") +@Getter @Setter @NoArgsConstructor @AllArgsConstructor +public class Trainer { + + // Composite PK: (team_id, member_id). + // team_id references organization.team(id). + // member_id references member.member(id) — FK added in V3 migration. + @EmbeddedId + private Id id; + + @Embeddable + @Data @NoArgsConstructor @AllArgsConstructor + public static class Id implements Serializable { + @Column(name = "team_id", nullable = false) + private UUID teamId; + + @Column(name = "member_id", nullable = false) + private UUID memberId; + } +} diff --git a/web-client/src/api.ts b/web-client/src/api.ts index 878ff91..b4a6582 100644 --- a/web-client/src/api.ts +++ b/web-client/src/api.ts @@ -417,7 +417,7 @@ export interface components { MemberCreate: { first_name: string; last_name: string; - email?: string; + email: string; /** Format: date */ birthday?: string; phone_number?: string; From 14ada971a44cf5e3e0a3462b3373f2324596986a Mon Sep 17 00:00:00 2001 From: Raphael Frank <04.raphael.frank@gmail.com> Date: Fri, 12 Jun 2026 16:16:08 +0200 Subject: [PATCH 3/5] add repositories to services and migration scripts --- infra/docker-compose.override.yml | 6 +++ infra/postgres/init-db.sh | 16 ++++++++ .../devoops/eventservice/entity/Event.java | 6 +-- .../repository/AttendanceRepository.java | 20 ++++++++++ .../repository/EventRepository.java | 14 +++++++ .../repository/SportEventRepository.java | 20 ++++++++++ .../repository/TeamEventRepository.java | 20 ++++++++++ .../db/migration/V1__create_schemas.sql | 2 - .../db/migration/V1__create_tables.sql | 30 +++++++++++++++ .../db/migration/V2__add_foreign_keys.sql | 15 ++++++++ .../repository/FeedbackRepository.java | 20 ++++++++++ .../db/migration/V1__create_schemas.sql | 2 - .../db/migration/V1__create_tables.sql | 9 +++++ .../db/migration/V2__add_foreign_keys.sql | 11 ++++++ .../repository/TransactionRepository.java | 17 +++++++++ .../db/migration/V1__create_schemas.sql | 2 - .../db/migration/V1__create_tables.sql | 10 +++++ .../db/migration/V2__add_foreign_keys.sql | 7 ++++ .../repository/MemberRepository.java | 14 +++++++ .../db/migration/V1__create_schemas.sql | 2 - .../db/migration/V1__create_tables.sql | 13 +++++++ .../organizationservice/entity/Sport.java | 2 +- .../organizationservice/entity/Team.java | 4 +- .../repository/DirectorRepository.java | 20 ++++++++++ .../repository/SportRepository.java | 15 ++++++++ .../repository/TeamRepository.java | 14 +++++++ .../repository/TraineeRepository.java | 20 ++++++++++ .../repository/TrainerRepository.java | 20 ++++++++++ .../db/migration/V1__create_schemas.sql | 2 - .../db/migration/V1__create_tables.sql | 38 +++++++++++++++++++ .../db/migration/V2__add_foreign_keys.sql | 9 +++++ 31 files changed, 384 insertions(+), 16 deletions(-) create mode 100644 services/spring-event/src/main/java/tum/devoops/eventservice/repository/AttendanceRepository.java create mode 100644 services/spring-event/src/main/java/tum/devoops/eventservice/repository/EventRepository.java create mode 100644 services/spring-event/src/main/java/tum/devoops/eventservice/repository/SportEventRepository.java create mode 100644 services/spring-event/src/main/java/tum/devoops/eventservice/repository/TeamEventRepository.java delete mode 100644 services/spring-event/src/main/resources/db/migration/V1__create_schemas.sql create mode 100644 services/spring-event/src/main/resources/db/migration/V1__create_tables.sql create mode 100644 services/spring-event/src/main/resources/db/migration/V2__add_foreign_keys.sql create mode 100644 services/spring-feedback/src/main/java/tum/devoops/feedbackservice/repository/FeedbackRepository.java delete mode 100644 services/spring-feedback/src/main/resources/db/migration/V1__create_schemas.sql create mode 100644 services/spring-feedback/src/main/resources/db/migration/V1__create_tables.sql create mode 100644 services/spring-feedback/src/main/resources/db/migration/V2__add_foreign_keys.sql create mode 100644 services/spring-finance/src/main/java/tum/devoops/financeservice/repository/TransactionRepository.java delete mode 100644 services/spring-finance/src/main/resources/db/migration/V1__create_schemas.sql create mode 100644 services/spring-finance/src/main/resources/db/migration/V1__create_tables.sql create mode 100644 services/spring-finance/src/main/resources/db/migration/V2__add_foreign_keys.sql create mode 100644 services/spring-member/src/main/java/tum/devoops/memberservice/repository/MemberRepository.java delete mode 100644 services/spring-member/src/main/resources/db/migration/V1__create_schemas.sql create mode 100644 services/spring-member/src/main/resources/db/migration/V1__create_tables.sql create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/DirectorRepository.java create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/SportRepository.java create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TeamRepository.java create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TraineeRepository.java create mode 100644 services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TrainerRepository.java delete mode 100644 services/spring-organization/src/main/resources/db/migration/V1__create_schemas.sql create mode 100644 services/spring-organization/src/main/resources/db/migration/V1__create_tables.sql create mode 100644 services/spring-organization/src/main/resources/db/migration/V2__add_foreign_keys.sql diff --git a/infra/docker-compose.override.yml b/infra/docker-compose.override.yml index 013271a..5af481b 100644 --- a/infra/docker-compose.override.yml +++ b/infra/docker-compose.override.yml @@ -127,12 +127,18 @@ services: keycloak: environment: KC_HOSTNAME: "http://localhost:8081/auth" + labels: !override + - "traefik.enable=true" + - "traefik.http.routers.keycloak.entrypoints=web" + - "traefik.http.routers.keycloak.rule=PathPrefix(`/auth`)" + - "traefik.http.services.keycloak.loadbalancer.server.port=8080" app-database: ports: - "5432:5432" traefik-forward-auth: + restart: "no" labels: !override - "traefik.enable=false" environment: diff --git a/infra/postgres/init-db.sh b/infra/postgres/init-db.sh index 22bac08..3043874 100755 --- a/infra/postgres/init-db.sh +++ b/infra/postgres/init-db.sh @@ -98,4 +98,20 @@ ALTER DEFAULT PRIVILEGES FOR ROLE finance_user IN SCHEMA finance GRANT SELECT ON TABLES TO reader; +-- ------------------------------------------------------------------------- +-- Cross-schema REFERENCES: required for FK constraints across schemas. +-- Granted per-user on the schemas they reference. +-- ------------------------------------------------------------------------- +ALTER DEFAULT PRIVILEGES FOR ROLE member_user + IN SCHEMA member + GRANT REFERENCES ON TABLES TO organization_user, event_user, feedback_user, finance_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE organization_user + IN SCHEMA organization + GRANT REFERENCES ON TABLES TO event_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE event_user + IN SCHEMA event + GRANT REFERENCES ON TABLES TO feedback_user; + EOSQL diff --git a/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Event.java b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Event.java index 3d18124..2e277ff 100644 --- a/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Event.java +++ b/services/spring-event/src/main/java/tum/devoops/eventservice/entity/Event.java @@ -44,14 +44,14 @@ public class Event { private UUID creatorId; @OneToMany - @JoinColumn(name = "event_id", referencedColumnName = "id", nullable = false) + @JoinColumn(name = "event_id", referencedColumnName = "id", insertable = false, updatable = false) private List attendees; @OneToMany - @JoinColumn(name = "event_id", referencedColumnName = "id", nullable = false) + @JoinColumn(name = "event_id", referencedColumnName = "id", insertable = false, updatable = false) private List sportsLinked; @OneToMany - @JoinColumn(name = "event_id", referencedColumnName = "id", nullable = false) + @JoinColumn(name = "event_id", referencedColumnName = "id", insertable = false, updatable = false) private List teamsLinked; } diff --git a/services/spring-event/src/main/java/tum/devoops/eventservice/repository/AttendanceRepository.java b/services/spring-event/src/main/java/tum/devoops/eventservice/repository/AttendanceRepository.java new file mode 100644 index 0000000..c74263c --- /dev/null +++ b/services/spring-event/src/main/java/tum/devoops/eventservice/repository/AttendanceRepository.java @@ -0,0 +1,20 @@ +package tum.devoops.eventservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.eventservice.entity.Attendance; + +public interface AttendanceRepository extends JpaRepository { + + // SELECT * FROM event.attendances WHERE event_id = ? + List findAllById_EventId(UUID eventId); + + // SELECT * FROM event.attendances WHERE member_id = ? + List findAllById_MemberId(UUID memberId); + + // DELETE FROM event.attendances WHERE event_id = ? + void deleteAllById_EventId(UUID eventId); +} diff --git a/services/spring-event/src/main/java/tum/devoops/eventservice/repository/EventRepository.java b/services/spring-event/src/main/java/tum/devoops/eventservice/repository/EventRepository.java new file mode 100644 index 0000000..36a64df --- /dev/null +++ b/services/spring-event/src/main/java/tum/devoops/eventservice/repository/EventRepository.java @@ -0,0 +1,14 @@ +package tum.devoops.eventservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.eventservice.entity.Event; + +public interface EventRepository extends JpaRepository { + + // SELECT * FROM event.events WHERE creator_id = ? + List findAllByCreatorId(UUID creatorId); +} diff --git a/services/spring-event/src/main/java/tum/devoops/eventservice/repository/SportEventRepository.java b/services/spring-event/src/main/java/tum/devoops/eventservice/repository/SportEventRepository.java new file mode 100644 index 0000000..08be72f --- /dev/null +++ b/services/spring-event/src/main/java/tum/devoops/eventservice/repository/SportEventRepository.java @@ -0,0 +1,20 @@ +package tum.devoops.eventservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.eventservice.entity.SportEvent; + +public interface SportEventRepository extends JpaRepository { + + // SELECT * FROM event.sport_events WHERE event_id = ? + List findAllById_EventId(UUID eventId); + + // SELECT * FROM event.sport_events WHERE sport_name = ? + List findAllById_SportName(String sportName); + + // DELETE FROM event.sport_events WHERE event_id = ? + void deleteAllById_EventId(UUID eventId); +} diff --git a/services/spring-event/src/main/java/tum/devoops/eventservice/repository/TeamEventRepository.java b/services/spring-event/src/main/java/tum/devoops/eventservice/repository/TeamEventRepository.java new file mode 100644 index 0000000..9ff9e29 --- /dev/null +++ b/services/spring-event/src/main/java/tum/devoops/eventservice/repository/TeamEventRepository.java @@ -0,0 +1,20 @@ +package tum.devoops.eventservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.eventservice.entity.TeamEvent; + +public interface TeamEventRepository extends JpaRepository { + + // SELECT * FROM event.team_events WHERE event_id = ? + List findAllById_EventId(UUID eventId); + + // SELECT * FROM event.team_events WHERE team_id = ? + List findAllById_TeamId(UUID teamId); + + // DELETE FROM event.team_events WHERE event_id = ? + void deleteAllById_EventId(UUID eventId); +} diff --git a/services/spring-event/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-event/src/main/resources/db/migration/V1__create_schemas.sql deleted file mode 100644 index 160c533..0000000 --- a/services/spring-event/src/main/resources/db/migration/V1__create_schemas.sql +++ /dev/null @@ -1,2 +0,0 @@ --- V1: Ensure event schema exists (defensive, already created by DB init script) -CREATE SCHEMA IF NOT EXISTS event; diff --git a/services/spring-event/src/main/resources/db/migration/V1__create_tables.sql b/services/spring-event/src/main/resources/db/migration/V1__create_tables.sql new file mode 100644 index 0000000..b335158 --- /dev/null +++ b/services/spring-event/src/main/resources/db/migration/V1__create_tables.sql @@ -0,0 +1,30 @@ +CREATE TABLE event.events ( + id UUID NOT NULL DEFAULT gen_random_uuid(), + name VARCHAR(255) NOT NULL, + description TEXT, + start_time TIMESTAMPTZ NOT NULL, + end_time TIMESTAMPTZ NOT NULL, + creator_id UUID NOT NULL, + CONSTRAINT pk_events PRIMARY KEY (id) +); + +CREATE TABLE event.attendances ( + event_id UUID NOT NULL, + member_id UUID NOT NULL, + CONSTRAINT pk_attendances PRIMARY KEY (event_id, member_id), + CONSTRAINT fk_attendances_event FOREIGN KEY (event_id) REFERENCES event.events (id) +); + +CREATE TABLE event.sport_events ( + event_id UUID NOT NULL, + sport_name VARCHAR(255) NOT NULL, + CONSTRAINT pk_sport_events PRIMARY KEY (event_id, sport_name), + CONSTRAINT fk_sport_events_event FOREIGN KEY (event_id) REFERENCES event.events (id) +); + +CREATE TABLE event.team_events ( + event_id UUID NOT NULL, + team_id UUID NOT NULL, + CONSTRAINT pk_team_events PRIMARY KEY (event_id, team_id), + CONSTRAINT fk_team_events_event FOREIGN KEY (event_id) REFERENCES event.events (id) +); diff --git a/services/spring-event/src/main/resources/db/migration/V2__add_foreign_keys.sql b/services/spring-event/src/main/resources/db/migration/V2__add_foreign_keys.sql new file mode 100644 index 0000000..1325e3e --- /dev/null +++ b/services/spring-event/src/main/resources/db/migration/V2__add_foreign_keys.sql @@ -0,0 +1,15 @@ +-- creator_id and attendances.member_id reference member.members(id). +-- sport_events.sport_name references organization.sports(name). +-- team_events.team_id references organization.teams(id). +-- All added after member and organization services have bootstrapped. +ALTER TABLE event.events + ADD CONSTRAINT fk_events_creator FOREIGN KEY (creator_id) REFERENCES member.members (id); + +ALTER TABLE event.attendances + ADD CONSTRAINT fk_attendances_member FOREIGN KEY (member_id) REFERENCES member.members (id); + +ALTER TABLE event.sport_events + ADD CONSTRAINT fk_sport_events_sport FOREIGN KEY (sport_name) REFERENCES organization.sports (name); + +ALTER TABLE event.team_events + ADD CONSTRAINT fk_team_events_team FOREIGN KEY (team_id) REFERENCES organization.teams (id); diff --git a/services/spring-feedback/src/main/java/tum/devoops/feedbackservice/repository/FeedbackRepository.java b/services/spring-feedback/src/main/java/tum/devoops/feedbackservice/repository/FeedbackRepository.java new file mode 100644 index 0000000..3d34851 --- /dev/null +++ b/services/spring-feedback/src/main/java/tum/devoops/feedbackservice/repository/FeedbackRepository.java @@ -0,0 +1,20 @@ +package tum.devoops.feedbackservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.feedbackservice.entity.Feedback; + +public interface FeedbackRepository extends JpaRepository { + + // SELECT * FROM feedback.feedback WHERE event_id = ? + List findAllByEventId(UUID eventId); + + // SELECT * FROM feedback.feedback WHERE member_id = ? + List findAllByMemberId(UUID memberId); + + // SELECT * FROM feedback.feedback WHERE creator_id = ? + List findAllByCreatorId(UUID creatorId); +} diff --git a/services/spring-feedback/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-feedback/src/main/resources/db/migration/V1__create_schemas.sql deleted file mode 100644 index 9bbc16c..0000000 --- a/services/spring-feedback/src/main/resources/db/migration/V1__create_schemas.sql +++ /dev/null @@ -1,2 +0,0 @@ --- V1: Ensure feedback schema exists (defensive, already created by DB init script) -CREATE SCHEMA IF NOT EXISTS feedback; diff --git a/services/spring-feedback/src/main/resources/db/migration/V1__create_tables.sql b/services/spring-feedback/src/main/resources/db/migration/V1__create_tables.sql new file mode 100644 index 0000000..ef8f430 --- /dev/null +++ b/services/spring-feedback/src/main/resources/db/migration/V1__create_tables.sql @@ -0,0 +1,9 @@ +CREATE TABLE feedback.feedback ( + id UUID NOT NULL DEFAULT gen_random_uuid(), + event_id UUID NOT NULL, + member_id UUID NOT NULL, + creator_id UUID NOT NULL, + created_at TIMESTAMPTZ NOT NULL, + feedback TEXT NOT NULL, + CONSTRAINT pk_feedback PRIMARY KEY (id) +); diff --git a/services/spring-feedback/src/main/resources/db/migration/V2__add_foreign_keys.sql b/services/spring-feedback/src/main/resources/db/migration/V2__add_foreign_keys.sql new file mode 100644 index 0000000..755b44b --- /dev/null +++ b/services/spring-feedback/src/main/resources/db/migration/V2__add_foreign_keys.sql @@ -0,0 +1,11 @@ +-- event_id references event.events(id). +-- member_id and creator_id reference member.members(id). +-- Added after event and member services have bootstrapped. +ALTER TABLE feedback.feedback + ADD CONSTRAINT fk_feedback_event FOREIGN KEY (event_id) REFERENCES event.events (id); + +ALTER TABLE feedback.feedback + ADD CONSTRAINT fk_feedback_member FOREIGN KEY (member_id) REFERENCES member.members (id); + +ALTER TABLE feedback.feedback + ADD CONSTRAINT fk_feedback_creator FOREIGN KEY (creator_id) REFERENCES member.members (id); diff --git a/services/spring-finance/src/main/java/tum/devoops/financeservice/repository/TransactionRepository.java b/services/spring-finance/src/main/java/tum/devoops/financeservice/repository/TransactionRepository.java new file mode 100644 index 0000000..4610576 --- /dev/null +++ b/services/spring-finance/src/main/java/tum/devoops/financeservice/repository/TransactionRepository.java @@ -0,0 +1,17 @@ +package tum.devoops.financeservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.financeservice.entity.Transaction; + +public interface TransactionRepository extends JpaRepository { + + // SELECT * FROM finance.transactions WHERE member_id = ? + List findAllByMemberId(UUID memberId); + + // SELECT * FROM finance.transactions WHERE creator_id = ? + List findAllByCreatorId(UUID creatorId); +} diff --git a/services/spring-finance/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-finance/src/main/resources/db/migration/V1__create_schemas.sql deleted file mode 100644 index 8ec4865..0000000 --- a/services/spring-finance/src/main/resources/db/migration/V1__create_schemas.sql +++ /dev/null @@ -1,2 +0,0 @@ --- V1: Ensure finance schema exists (defensive, already created by DB init script) -CREATE SCHEMA IF NOT EXISTS finance; diff --git a/services/spring-finance/src/main/resources/db/migration/V1__create_tables.sql b/services/spring-finance/src/main/resources/db/migration/V1__create_tables.sql new file mode 100644 index 0000000..0d98100 --- /dev/null +++ b/services/spring-finance/src/main/resources/db/migration/V1__create_tables.sql @@ -0,0 +1,10 @@ +CREATE TABLE finance.transactions ( + id UUID NOT NULL DEFAULT gen_random_uuid(), + member_id UUID NOT NULL, + creator_id UUID NOT NULL, + amount_cents INTEGER NOT NULL, + created_at TIMESTAMPTZ NOT NULL, + title VARCHAR(255) NOT NULL, + description TEXT NOT NULL, + CONSTRAINT pk_transactions PRIMARY KEY (id) +); diff --git a/services/spring-finance/src/main/resources/db/migration/V2__add_foreign_keys.sql b/services/spring-finance/src/main/resources/db/migration/V2__add_foreign_keys.sql new file mode 100644 index 0000000..d3bfef1 --- /dev/null +++ b/services/spring-finance/src/main/resources/db/migration/V2__add_foreign_keys.sql @@ -0,0 +1,7 @@ +-- member_id and creator_id reference member.members(id). +-- Added after member service has bootstrapped. +ALTER TABLE finance.transactions + ADD CONSTRAINT fk_transactions_member FOREIGN KEY (member_id) REFERENCES member.members (id); + +ALTER TABLE finance.transactions + ADD CONSTRAINT fk_transactions_creator FOREIGN KEY (creator_id) REFERENCES member.members (id); diff --git a/services/spring-member/src/main/java/tum/devoops/memberservice/repository/MemberRepository.java b/services/spring-member/src/main/java/tum/devoops/memberservice/repository/MemberRepository.java new file mode 100644 index 0000000..04d32f6 --- /dev/null +++ b/services/spring-member/src/main/java/tum/devoops/memberservice/repository/MemberRepository.java @@ -0,0 +1,14 @@ +package tum.devoops.memberservice.repository; + +import java.util.Optional; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.memberservice.entity.Member; + +public interface MemberRepository extends JpaRepository { + + // SELECT * FROM member.members WHERE email = ? LIMIT 1 + Optional findByEmail(String email); +} diff --git a/services/spring-member/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-member/src/main/resources/db/migration/V1__create_schemas.sql deleted file mode 100644 index 6e48825..0000000 --- a/services/spring-member/src/main/resources/db/migration/V1__create_schemas.sql +++ /dev/null @@ -1,2 +0,0 @@ --- V1: Ensure member schema exists (defensive, already created by DB init script) -CREATE SCHEMA IF NOT EXISTS member; diff --git a/services/spring-member/src/main/resources/db/migration/V1__create_tables.sql b/services/spring-member/src/main/resources/db/migration/V1__create_tables.sql new file mode 100644 index 0000000..0ba3174 --- /dev/null +++ b/services/spring-member/src/main/resources/db/migration/V1__create_tables.sql @@ -0,0 +1,13 @@ +CREATE TABLE member.members ( + id UUID NOT NULL DEFAULT gen_random_uuid(), + first_name VARCHAR(255) NOT NULL, + last_name VARCHAR(255) NOT NULL, + email VARCHAR(255) NOT NULL, + birthday DATE, + phone_number VARCHAR(255), + address VARCHAR(255), + joining_date DATE NOT NULL, + information TEXT, + CONSTRAINT pk_members PRIMARY KEY (id), + CONSTRAINT uq_members_email UNIQUE (email) +); diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Sport.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Sport.java index e4c21e9..b38f5cf 100644 --- a/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Sport.java +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Sport.java @@ -30,6 +30,6 @@ public class Sport { // Each Director row links this sport to a member (director role). @OneToMany - @JoinColumn(name = "sport_name", referencedColumnName = "name", nullable = false) + @JoinColumn(name = "sport_name", referencedColumnName = "name", insertable = false, updatable = false) private List directors; } diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Team.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Team.java index 2ba1c6b..8ca78ad 100644 --- a/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Team.java +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/entity/Team.java @@ -43,10 +43,10 @@ public class Team { private String sportName; @OneToMany - @JoinColumn(name = "team_id", referencedColumnName = "id", nullable = false) + @JoinColumn(name = "team_id", referencedColumnName = "id", insertable = false, updatable = false) private List trainers; @OneToMany - @JoinColumn(name = "team_id", referencedColumnName = "id", nullable = false) + @JoinColumn(name = "team_id", referencedColumnName = "id", insertable = false, updatable = false) private List trainees; } diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/DirectorRepository.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/DirectorRepository.java new file mode 100644 index 0000000..cc1a1ec --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/DirectorRepository.java @@ -0,0 +1,20 @@ +package tum.devoops.organizationservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.organizationservice.entity.Director; + +public interface DirectorRepository extends JpaRepository { + + // SELECT * FROM organization.directors WHERE sport_name = ? + List findAllById_SportName(String sportName); + + // SELECT * FROM organization.directors WHERE member_id = ? + List findAllById_MemberId(UUID memberId); + + // DELETE FROM organization.directors WHERE sport_name = ? + void deleteAllById_SportName(String sportName); +} diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/SportRepository.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/SportRepository.java new file mode 100644 index 0000000..22809cd --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/SportRepository.java @@ -0,0 +1,15 @@ +package tum.devoops.organizationservice.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.organizationservice.entity.Sport; + +public interface SportRepository extends JpaRepository { + + // SELECT s.* FROM organization.sports s + // JOIN organization.directors d ON d.sport_name = s.name + // WHERE d.member_id = ? + List findAllByDirectors_Id_MemberId(java.util.UUID memberId); +} diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TeamRepository.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TeamRepository.java new file mode 100644 index 0000000..181b5cc --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TeamRepository.java @@ -0,0 +1,14 @@ +package tum.devoops.organizationservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.organizationservice.entity.Team; + +public interface TeamRepository extends JpaRepository { + + // SELECT * FROM organization.teams WHERE sport_name = ? + List findAllBySportName(String sportName); +} diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TraineeRepository.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TraineeRepository.java new file mode 100644 index 0000000..6092226 --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TraineeRepository.java @@ -0,0 +1,20 @@ +package tum.devoops.organizationservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.organizationservice.entity.Trainee; + +public interface TraineeRepository extends JpaRepository { + + // SELECT * FROM organization.trainees WHERE team_id = ? + List findAllById_TeamId(UUID teamId); + + // SELECT * FROM organization.trainees WHERE member_id = ? + List findAllById_MemberId(UUID memberId); + + // DELETE FROM organization.trainees WHERE team_id = ? + void deleteAllById_TeamId(UUID teamId); +} diff --git a/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TrainerRepository.java b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TrainerRepository.java new file mode 100644 index 0000000..47424b6 --- /dev/null +++ b/services/spring-organization/src/main/java/tum/devoops/organizationservice/repository/TrainerRepository.java @@ -0,0 +1,20 @@ +package tum.devoops.organizationservice.repository; + +import java.util.List; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import tum.devoops.organizationservice.entity.Trainer; + +public interface TrainerRepository extends JpaRepository { + + // SELECT * FROM organization.trainers WHERE team_id = ? + List findAllById_TeamId(UUID teamId); + + // SELECT * FROM organization.trainers WHERE member_id = ? + List findAllById_MemberId(UUID memberId); + + // DELETE FROM organization.trainers WHERE team_id = ? + void deleteAllById_TeamId(UUID teamId); +} diff --git a/services/spring-organization/src/main/resources/db/migration/V1__create_schemas.sql b/services/spring-organization/src/main/resources/db/migration/V1__create_schemas.sql deleted file mode 100644 index 7498826..0000000 --- a/services/spring-organization/src/main/resources/db/migration/V1__create_schemas.sql +++ /dev/null @@ -1,2 +0,0 @@ --- V1: Ensure organization schema exists (defensive, already created by DB init script) -CREATE SCHEMA IF NOT EXISTS organization; diff --git a/services/spring-organization/src/main/resources/db/migration/V1__create_tables.sql b/services/spring-organization/src/main/resources/db/migration/V1__create_tables.sql new file mode 100644 index 0000000..034b7e2 --- /dev/null +++ b/services/spring-organization/src/main/resources/db/migration/V1__create_tables.sql @@ -0,0 +1,38 @@ +CREATE TABLE organization.sports ( + name VARCHAR(255) NOT NULL, + description TEXT, + created_at DATE NOT NULL, + CONSTRAINT pk_sports PRIMARY KEY (name) +); + +CREATE TABLE organization.teams ( + id UUID NOT NULL DEFAULT gen_random_uuid(), + name VARCHAR(255) NOT NULL, + description TEXT, + created_at DATE NOT NULL, + address VARCHAR(255), + sport_name VARCHAR(255) NOT NULL, + CONSTRAINT pk_teams PRIMARY KEY (id), + CONSTRAINT fk_teams_sport FOREIGN KEY (sport_name) REFERENCES organization.sports (name) +); + +CREATE TABLE organization.directors ( + sport_name VARCHAR(255) NOT NULL, + member_id UUID NOT NULL, + CONSTRAINT pk_directors PRIMARY KEY (sport_name, member_id), + CONSTRAINT fk_directors_sport FOREIGN KEY (sport_name) REFERENCES organization.sports (name) +); + +CREATE TABLE organization.trainers ( + team_id UUID NOT NULL, + member_id UUID NOT NULL, + CONSTRAINT pk_trainers PRIMARY KEY (team_id, member_id), + CONSTRAINT fk_trainers_team FOREIGN KEY (team_id) REFERENCES organization.teams (id) +); + +CREATE TABLE organization.trainees ( + team_id UUID NOT NULL, + member_id UUID NOT NULL, + CONSTRAINT pk_trainees PRIMARY KEY (team_id, member_id), + CONSTRAINT fk_trainees_team FOREIGN KEY (team_id) REFERENCES organization.teams (id) +); diff --git a/services/spring-organization/src/main/resources/db/migration/V2__add_foreign_keys.sql b/services/spring-organization/src/main/resources/db/migration/V2__add_foreign_keys.sql new file mode 100644 index 0000000..2847b6e --- /dev/null +++ b/services/spring-organization/src/main/resources/db/migration/V2__add_foreign_keys.sql @@ -0,0 +1,9 @@ +-- member_id columns reference member.members(id), added after member service bootstraps. +ALTER TABLE organization.directors + ADD CONSTRAINT fk_directors_member FOREIGN KEY (member_id) REFERENCES member.members (id); + +ALTER TABLE organization.trainers + ADD CONSTRAINT fk_trainers_member FOREIGN KEY (member_id) REFERENCES member.members (id); + +ALTER TABLE organization.trainees + ADD CONSTRAINT fk_trainees_member FOREIGN KEY (member_id) REFERENCES member.members (id); From ee1eb11ec6c9d2f4cad3c6d0bdc37423858af0dd Mon Sep 17 00:00:00 2001 From: Raphael Frank <04.raphael.frank@gmail.com> Date: Fri, 12 Jun 2026 16:18:02 +0200 Subject: [PATCH 4/5] add db description to readme --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index 6d5eb8e..bd858db 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,8 @@ everything is reachable on plain HTTP: | | Web client | | | Swagger UI | | | APIs (organization, members, events, feedback, finance, letters, helper) | +| | Keycloak (via Traefik) | +| | Keycloak (direct, for admin console) | | | Traefik dashboard | > **Do not run** `docker compose -f infra/docker-compose.yml up` locally — that @@ -231,6 +233,27 @@ ghcr (tagged with the commit SHA), then `deploy-k8s` runs `helm upgrade See [`infra/helm/README.md`](infra/helm/README.md) for the chart layout, required one-time secrets (`genai-env`, `ghcr-pull`), and manual deploy instructions. +## Database + +All five Spring services share a single **PostgreSQL 15** instance (`app_db`) but each owns a dedicated schema and a least-privilege user: + +| Service | Schema | User | +|---|---|---| +| Organization | `organization` | `organization_user` | +| Member | `member` | `member_user` | +| Event | `event` | `event_user` | +| Feedback | `feedback` | `feedback_user` | +| Finance | `finance` | `finance_user` | + +Schemas and users are created at DB init time by [`infra/postgres/init-db.sh`](infra/postgres/init-db.sh). Each service runs its own **Flyway** migrations on startup: + +- `V1__create_tables.sql` — creates all tables for that schema +- `V2__add_foreign_keys.sql` — adds cross-schema foreign keys (e.g. `event.events.creator_id → member.members.id`) + +Cross-schema `REFERENCES` privileges are granted via `ALTER DEFAULT PRIVILEGES` in `init-db.sh`, so foreign-key constraints across schemas work on fresh deploys without manual intervention. + +The letter service has no database (`spring.flyway.enabled=false`). The GenAI service uses file-based storage for RAG documents. + ## Authentication (Keycloak) All services are protected by [Keycloak 26](https://www.keycloak.org) via OIDC/JWT. Keycloak is included in both the Docker Compose stack and the Helm chart — no separate installation is needed. From ee18e8d24346857d47e300f14b48a9d4614c1988 Mon Sep 17 00:00:00 2001 From: Raphael Frank <04.raphael.frank@gmail.com> Date: Fri, 12 Jun 2026 16:25:44 +0200 Subject: [PATCH 5/5] fix pipeline --- infra/docker-compose.yml | 6 ------ .../templates/postgres-init-configmap.yaml | 16 ++++++++++++++++ .../config/checkstyle/checkstyle.xml | 7 +++++++ .../config/checkstyle/checkstyle.xml | 7 +++++++ 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/infra/docker-compose.yml b/infra/docker-compose.yml index 8fbcdc9..4bd96d2 100644 --- a/infra/docker-compose.yml +++ b/infra/docker-compose.yml @@ -32,7 +32,6 @@ services: - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db - SPRING_DATASOURCE_USERNAME=organization_user - SPRING_DATASOURCE_PASSWORD=organization_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -59,7 +58,6 @@ services: - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db - SPRING_DATASOURCE_USERNAME=member_user - SPRING_DATASOURCE_PASSWORD=member_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -86,7 +84,6 @@ services: - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db - SPRING_DATASOURCE_USERNAME=event_user - SPRING_DATASOURCE_PASSWORD=event_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -113,7 +110,6 @@ services: - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db - SPRING_DATASOURCE_USERNAME=feedback_user - SPRING_DATASOURCE_PASSWORD=feedback_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -140,7 +136,6 @@ services: - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db - SPRING_DATASOURCE_USERNAME=finance_user - SPRING_DATASOURCE_PASSWORD=finance_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=validate - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" @@ -167,7 +162,6 @@ services: - SPRING_DATASOURCE_URL=jdbc:postgresql://app-database:5432/app_db - SPRING_DATASOURCE_USERNAME=letter_user - SPRING_DATASOURCE_PASSWORD=letter_password - - SPRING_JPA_HIBERNATE_DDL_AUTO=none - SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=https://team-devoops.uaenorth.cloudapp.azure.com/auth/realms/devops labels: - "traefik.enable=true" diff --git a/infra/helm/team-devoops/templates/postgres-init-configmap.yaml b/infra/helm/team-devoops/templates/postgres-init-configmap.yaml index 004eaf8..a7b6a96 100644 --- a/infra/helm/team-devoops/templates/postgres-init-configmap.yaml +++ b/infra/helm/team-devoops/templates/postgres-init-configmap.yaml @@ -95,5 +95,21 @@ data: IN SCHEMA finance GRANT SELECT ON TABLES TO reader; + -- ----------------------------------------------------------------------- + -- Cross-schema REFERENCES: required for FK constraints across schemas. + -- Granted per-user on the schemas they reference. + -- ----------------------------------------------------------------------- + ALTER DEFAULT PRIVILEGES FOR ROLE member_user + IN SCHEMA member + GRANT REFERENCES ON TABLES TO organization_user, event_user, feedback_user, finance_user; + + ALTER DEFAULT PRIVILEGES FOR ROLE organization_user + IN SCHEMA organization + GRANT REFERENCES ON TABLES TO event_user; + + ALTER DEFAULT PRIVILEGES FOR ROLE event_user + IN SCHEMA event + GRANT REFERENCES ON TABLES TO feedback_user; + EOSQL {{- end }} diff --git a/services/spring-event/config/checkstyle/checkstyle.xml b/services/spring-event/config/checkstyle/checkstyle.xml index 580dda9..c99593a 100644 --- a/services/spring-event/config/checkstyle/checkstyle.xml +++ b/services/spring-event/config/checkstyle/checkstyle.xml @@ -15,6 +15,13 @@ + + + + + + diff --git a/services/spring-organization/config/checkstyle/checkstyle.xml b/services/spring-organization/config/checkstyle/checkstyle.xml index 580dda9..7e1b5e0 100644 --- a/services/spring-organization/config/checkstyle/checkstyle.xml +++ b/services/spring-organization/config/checkstyle/checkstyle.xml @@ -15,6 +15,13 @@ + + + + + +