Document repository overview endpoint
This commit is contained in:
@@ -19,3 +19,5 @@
|
|||||||
- [016 - Datenbank-Healthcheck ausgelagert](016-datenbank-healthcheck-ausgelagert.md)
|
- [016 - Datenbank-Healthcheck ausgelagert](016-datenbank-healthcheck-ausgelagert.md)
|
||||||
|
|
||||||
- [017 - Serverstruktur: Status-API ausgelagert](017-serverstruktur-status-api-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)
|
||||||
|
|||||||
@@ -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.
|
||||||
Reference in New Issue
Block a user