meldestelle/README_DATABASE_SETUP.md
2025-07-21 12:08:20 +02:00

4.6 KiB

Datenbank-Setup

Dieses Dokument beschreibt, wie die Datenbank für das Meldestelle-Projekt eingerichtet und verwaltet wird.

Überblick

Das Projekt verwendet PostgreSQL als Datenbank und Exposed als ORM-Framework. Die Datenbankmigrationen werden mit einem eigenem, auf Exposed basierenden Migrationssystem verwaltet.

Konfiguration

Die Datenbankkonfiguration erfolgt über Umgebungsvariablen. Diese können entweder direkt im Betriebssystem gesetzt oder über eine .env-Datei bei Verwendung von Docker Compose bereitgestellt werden.

Erforderliche Umgebungsvariablen

  • DB_HOST: Hostname der Datenbank (Standard: localhost)
  • DB_PORT: Port der Datenbank (Standard: 5432)
  • DB_NAME: Name der Datenbank (Standard: meldestelle_db)
  • DB_USER: Benutzername für die Datenbank (Standard: meldestelle_user)
  • DB_PASSWORD: Passwort für den Datenbankbenutzer

.env-Datei

Für die lokale Entwicklung und Docker Compose wird eine .env-Datei im Projektwurzelverzeichnis verwendet. Ein Beispiel:

# Datenbank-Konfiguration
POSTGRES_USER=meldestelle_user
POSTGRES_PASSWORD=secure_password_change_me
POSTGRES_DB=meldestelle_db

# PgAdmin Konfiguration
PGADMIN_DEFAULT_EMAIL=admin@example.com
PGADMIN_DEFAULT_PASSWORD=admin_password_change_me
PGADMIN_PORT=5050

# API Gateway Konfiguration
API_PORT=8081

Datenbankmigrationen

Das Projekt verwendet ein eigenes, auf Exposed basierendes Migrationssystem. Jede Migration ist eine Klasse, die von Migration erbt und eine eindeutige Versionsnummer und Beschreibung hat.

Migrations-Struktur

Migrationen werden in den entsprechenden Modulen definiert und im API-Gateway zentral registriert und ausgeführt.

Hinzufügen einer neuen Migration

  1. Erstellen Sie eine neue Klasse, die von Migration erbt
  2. Implementieren Sie die up()-Methode, um die nötigen Änderungen vorzunehmen
  3. Registrieren Sie die Migration in MigrationSetup.kt

Beispiel:

class MyNewMigration : Migration(5, "Add new feature tables") {
    override fun up() {
        SchemaUtils.create(MyNewTable)
    }
}

Ausführen von Migrationen

Migrationen werden automatisch beim Start der Anwendung ausgeführt. Es werden nur Migrationen ausgeführt, die noch nicht in der Datenbank registriert sind.

Datenbankstruktur

Die Datenbankstruktur ist in verschiedene Bereiche unterteilt, die den Modulen des Projekts entsprechen:

  1. Master Data - Stammdaten wie Länder, Bundesländer, Sportarten
  2. Member Management - Personen, Vereine, Mitgliedschaften
  3. Horse Registry - Pferde und deren Besitzer
  4. Event Management - Veranstaltungen und zugehörige Daten

Entwicklungsumgebung einrichten

Mit Docker Compose

  1. Erstellen Sie eine .env-Datei mit den erforderlichen Umgebungsvariablen
  2. Führen Sie docker-compose up -d db aus, um nur die Datenbank zu starten
  3. Alternativ docker-compose up -d für das gesamte System

PgAdmin verwenden

Das Projekt enthält einen PgAdmin-Service für die einfache Verwaltung der Datenbank über eine Web-Oberfläche.

  1. Starten Sie die Anwendung mit Docker Compose:

    docker-compose up -d
    
  2. Zugriff auf PgAdmin:

    • Öffnen Sie http://localhost:5050 im Browser
    • Melden Sie sich mit den Zugangsdaten aus der .env-Datei an:
      • E-Mail: admin@example.com (oder Wert von PGADMIN_DEFAULT_EMAIL)
      • Passwort: admin_password_change_me (oder Wert von PGADMIN_DEFAULT_PASSWORD)
  3. Verbindung zur Datenbank in PgAdmin einrichten:

    • Rechtsklick auf "Servers" > "Create" > "Server..."
    • Name: Meldestelle
    • Connection-Tab:
      • Host: db
      • Port: 5432
      • Maintenance database: meldestelle_db
      • Username: meldestelle_user
      • Password: secure_password_change_me (oder Wert von DB_PASSWORD)
  4. Überprüfen Sie, ob die Tabellen korrekt erstellt wurden, einschließlich der _migrations-Tabelle.

Manuell

  1. Installieren Sie PostgreSQL auf Ihrem System
  2. Erstellen Sie eine Datenbank und einen Benutzer
  3. Setzen Sie die Umgebungsvariablen oder passen Sie die Standardwerte in DatabaseConfig.kt an
  4. Starten Sie die Anwendung

Fehlerbehebung

Verbindungsprobleme

  • Überprüfen Sie, ob die PostgreSQL-Instanz läuft
  • Überprüfen Sie die Verbindungsparameter in den Umgebungsvariablen
  • Überprüfen Sie Firewalls und Netzwerkeinstellungen

Migrationsfehler

  • Prüfen Sie die Logs auf detaillierte Fehlermeldungen
  • Migrationen werden nur einmal ausgeführt - Änderungen an bestehenden Migrationen haben keine Auswirkung
  • Bei schwerwiegenden Problemen kann die _migrations-Tabelle manuell bearbeitet werden (nur für Fortgeschrittene)

Letztes Update

2025-07-21