From 9cd86d18af052f60b3876298fade4a399f271b0e Mon Sep 17 00:00:00 2001 From: Fabian Wolter Date: Sun, 14 Jun 2026 07:04:09 +0000 Subject: [PATCH] Document repository overview endpoint --- install-notes/000-installation-index.md | 2 + .../018-repository-schicht-system-overview.md | 170 ++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 install-notes/018-repository-schicht-system-overview.md diff --git a/install-notes/000-installation-index.md b/install-notes/000-installation-index.md index 509299e..2f858a3 100644 --- a/install-notes/000-installation-index.md +++ b/install-notes/000-installation-index.md @@ -19,3 +19,5 @@ - [016 - Datenbank-Healthcheck ausgelagert](016-datenbank-healthcheck-ausgelagert.md) - [017 - Serverstruktur: Status-API ausgelagert](017-serverstruktur-status-api-ausgelagert.md) + +- [018 - Repository-Schicht und System-Overview-Endpunkt](018-repository-schicht-system-overview.md) diff --git a/install-notes/018-repository-schicht-system-overview.md b/install-notes/018-repository-schicht-system-overview.md new file mode 100644 index 0000000..c900eae --- /dev/null +++ b/install-notes/018-repository-schicht-system-overview.md @@ -0,0 +1,170 @@ +# 018 - Repository-Schicht und System-Overview-Endpunkt + +## Ziel + +Für RUVNOX Tactical wurde eine erste serverseitige Repository-Schicht angelegt. Außerdem wurde ein neuer API-Endpunkt für einfache Systemübersichten ergänzt. + +## Neuer API-Endpunkt + +GET /api/v1/system/overview + +Der Endpunkt liefert Zählerstände aus der PostgreSQL-Datenbank. + +## Neue Serverstruktur + +Neue Package-Struktur: + +src/main/kotlin/de/ruvnox/tactical/repository + +Neue Repository-Dateien: + +- RepositorySupport.kt +- UserRepository.kt +- DeviceRepository.kt +- OperationRoomRepository.kt +- MessageRepository.kt +- AuditEventRepository.kt + +Neue API-Dateien: + +- SystemDtos.kt +- SystemRoutes.kt + +Geänderte Datei: + +- Main.kt + +## RepositorySupport.kt + +RepositorySupport.kt enthält eine interne Hilfsfunktion queryLong(sql). + +Diese Funktion: + +- öffnet eine Datenbankverbindung über Database.connection() +- führt eine SQL-Abfrage aus +- gibt den ersten Long-Wert zurück +- schließt Connection, Statement und ResultSet automatisch + +## UserRepository + +Liefert: + +- countTotal() +- countActive() + +SQL-Basis: + +app_users + +## DeviceRepository + +Liefert: + +- countTotal() +- countActive() + +SQL-Basis: + +devices + +## OperationRoomRepository + +Liefert: + +- countTotal() +- countActive() + +SQL-Basis: + +operation_rooms + +## MessageRepository + +Liefert: + +- countTotal() + +SQL-Basis: + +messages + +## AuditEventRepository + +Liefert: + +- countTotal() + +SQL-Basis: + +audit_events + +## SystemDtos.kt + +Neue DTOs: + +- CountSummaryResponse +- SystemOverviewResponse + +SystemOverviewResponse enthält: + +- service +- status +- users +- devices +- operationRooms +- messages +- auditEvents + +## SystemRoutes.kt + +SystemRoutes.kt registriert: + +GET /api/v1/system/overview + +Der Endpunkt fragt die Repository-Schicht ab und liefert eine JSON-Antwort. + +## Main.kt + +Main.kt registriert jetzt zusätzlich: + +systemRoutes() + +Neben den bisherigen statusRoutes(). + +## Verifikation + +Lokal: + +curl -fsS http://127.0.0.1:8080/api/v1/system/overview + +Öffentlich: + +curl -fsS https://tactical.ruvnox.de/api/v1/system/overview + +## Sicherheitshinweis + +Der Endpunkt ist aktuell noch ungeschützt. + +Für den Entwicklungsstand ist das akzeptabel, weil nur Zählerstände ausgegeben werden. Vor produktiver Nutzung muss dieser Endpunkt entweder geschützt, entfernt oder auf interne Nutzung beschränkt werden. + +## Git-Commit + +tactical-server: + +Add repository overview endpoint + +## Abschlussstand + +- Repository-Schicht angelegt +- Erste DB-Abfragen implementiert +- System-Overview-Endpunkt ergänzt +- Build erfolgreich +- Deployment erfolgreich +- API lokal geprüft +- API öffentlich geprüft +- Server-Repo gepusht +- Docs-Repo aktualisiert + +## Nächster Abschnitt + +Als nächstes sollte ein Bootstrap-Mechanismus für den ersten Admin-User erstellt werden.