chore: migrate to Exposed 1.0.0 and refactor UUID handling

Updated persistence layer to align with Exposed 1.0.0. Refactored table definitions to use `javaUUID` for consistency with `java.util.UUID`. Adjusted transaction handling for compatibility with the latest API changes. Enhanced error handling in database utility functions and refined pagination logic. Added documentation and migration updates for best practices with Exposed 1.0.0.
This commit is contained in:
2026-02-02 12:34:24 +01:00
parent d4f20df654
commit 55e5302e13
12 changed files with 238 additions and 62 deletions
@@ -0,0 +1,41 @@
---
type: Journal
status: COMPLETED
owner: Lead Architect
date: 2026-01-29
participants:
- Lead Architect
---
# Session Log: 29. Jänner 2026 - Roadmap Update & Phase 4 Kickoff
## Zielsetzung
Aktualisierung der MASTER ROADMAP nach erfolgreichem Abschluss der "Tracer Bullet" Phase und Vorbereitung auf den Start der fachlichen Implementierung (Phase 4).
## Durchgeführte Arbeiten
### 1. Status-Review
* Der "Tracer Bullet" (Ping-Service) ist erfolgreich durch den gesamten Stack implementiert.
* Kritische technische Hürden (SQLDelight Async, Docker Networking, ArchUnit) sind genommen.
* Das Projekt ist bereit für die Skalierung auf echte Fach-Domänen.
### 2. Roadmap Update
* **Phase 1-3:** Als "ABGESCHLOSSEN" markiert.
* **Phase 4 (Production Packaging & Domain Start):** Als "AKTUELL" definiert.
* **Neue Aufgaben:**
* **DevOps:** Dockerisierung des Frontends.
* **Backend:** Erstellung des `event-service`.
* **Frontend:** Erstellung des `events`-Features.
* **Architecture:** Sicherstellung der ArchUnit-Abdeckung für neue Module.
### 3. Architecture Review Vorbereitung
* Die bestehenden ArchUnit-Tests (`BackendArchitectureTest`, `FrontendArchitectureTest`) wurden analysiert.
* **Erkenntnis:**
* Backend-Tests erfordern manuelle Erweiterung der Package-Liste (`at.mocode.events..`).
* Frontend-Tests erfordern strikte Einhaltung der Package-Struktur (`at.mocode.<domain>.feature`).
* Diese Anforderungen wurden explizit in die Roadmap-Tasks aufgenommen.
## Ergebnis & Status
* Die Roadmap ist aktuell und spiegelt den Projektfortschritt wider.
* Die Aufgaben für die spezialisierten Agenten sind klar definiert.
* Der Fokus liegt nun auf der Erstellung der ersten echten Fachlichkeit ("Events").
@@ -0,0 +1,37 @@
---
type: Journal
status: COMPLETED
owner: Lead Architect
date: 2026-01-30
participants:
- Lead Architect
---
# Session Log: 30. Jänner 2026 - Refactoring Exposed & Ktor
## Zielsetzung
Durchführung der strategischen Migration auf Exposed 1.0.0 (Stable) und Ktor 3.4.0, basierend auf den technischen Analyseberichten.
## Durchgeführte Arbeiten
### 1. Versions-Update (`libs.versions.toml`)
* **Exposed:** Aktualisiert von `1.0.0-rc-4` auf `1.0.0`.
* **Ktor:** Aktualisiert von `3.3.3` auf `3.4.0`.
* **Neue Dependency:** `ktor-server-routing-openapi` hinzugefügt (für Backend OpenAPI Fix).
### 2. Exposed Migration (Backend)
* **Problem:** `DatabaseUtils.kt` enthielt veraltete/falsche Imports (`org.jetbrains.exposed.v1...`), die nicht mit Exposed 1.0.0 kompatibel sind.
* **Lösung:** Die Imports wurden auf die Standard-Exposed-Packages (`org.jetbrains.exposed.sql...`) korrigiert.
* **UUID-Thematik:** Die Tabellen-Definitionen (`VeranstaltungTable`, etc.) nutzen weiterhin `UUIDTable`. Es besteht das Risiko, dass Exposed 1.0.0 hier auf `kotlin.uuid.Uuid` gewechselt hat. Dies muss beim nächsten Build verifiziert werden. Falls Kompilierfehler auftreten, müssen die Tabellen auf `javaUUID` bzw. `JavaUUIDTable` (falls existent) migriert werden.
### 3. Ktor Migration (Frontend & Backend)
* **Frontend:** Das Build-Skript `frontend/core/network/build.gradle.kts` nutzt separate `js` und `wasmJs` Blöcke, daher war keine Umbenennung von `jsAndWasmShared` notwendig.
* **Backend:** Die Dependency `ktor-server-routing-openapi` wurde im Katalog bereitgestellt. Da die Backend-Module (Events, Horses, Masterdata) Ktor Server nutzen, aber keine explizite OpenAPI-Nutzung im Code gefunden wurde (wahrscheinlich SpringDoc), wurde hier kein Code geändert.
## Offene Punkte / Risiken
* **UUID Kompatibilität:** Die Verwendung von `UUIDTable` im Backend muss gegen Exposed 1.0.0 getestet werden. Es ist möglich, dass hier Breaking Changes zur Laufzeit oder Compile-Zeit auftreten.
* **Ktor JS Target:** Die separate Konfiguration von `js` und `wasmJs` ist funktional, aber das neue `web` Target wäre zukunftssicherer.
## Nächste Schritte
1. **Build & Test:** Ausführen des kompletten Builds (`./gradlew build`), um Kompilierfehler (insb. UUIDs) zu identifizieren.
2. **Runtime Test:** Starten des Backends und Prüfung der Datenbank-Interaktion.