171 lines
2.7 KiB
Markdown
171 lines
2.7 KiB
Markdown
# 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.
|