This commit is contained in:
+26
-25
@@ -1,28 +1,37 @@
|
||||
# Wegwichtel Editor v3
|
||||
# Wegwichtel Editor v5
|
||||
|
||||
Dieses Paket ergänzt den einfachen Streckeneditor und die zugehörigen Tests.
|
||||
Dieses Paket bereinigt den einfachen Streckeneditor nach dem grünen SonarQube-Lauf weiter.
|
||||
|
||||
## Status
|
||||
|
||||
Der zuletzt geprüfte SonarQube-Export meldet ein bestandenes Quality Gate, keine Bugs, keine Vulnerabilities, keine Code Smells und keine Security Hotspots. Die New-Coverage lag bei 85,1 %.
|
||||
|
||||
## Fachliche Optimierungen gegenüber v4
|
||||
|
||||
- Der Editor sendet `activated_at` nicht mehr beim Speichern von Strecken.
|
||||
- Neue Strecken bleiben durch den DB-Default unveröffentlicht.
|
||||
- Bereits manuell aktivierte Strecken werden durch spätere Editor-Änderungen nicht versehentlich deaktiviert.
|
||||
- Der Plus-Button besitzt `aria-haspopup="dialog"`, `aria-expanded` und `aria-controls`; beim Öffnen und Schließen wird `aria-expanded` synchronisiert.
|
||||
- POI-Sortierpfeile sind am Listenanfang beziehungsweise Listenende deaktiviert.
|
||||
- Das Initialschema enthält zusätzlich `idx_routes_activation` für spätere veröffentlichte Listenabfragen nach `status` und `activated_at`.
|
||||
- POIs erhalten analog zu Strecken einen `pois_updated_at`-Trigger, damit `updated_at` bei Bearbeitungen automatisch aktualisiert wird.
|
||||
- Die Dokumentation verwendet durchgehend `TEXT DEFAULT NULL` statt des für SQLite-STRICT falschen `DATETIME`.
|
||||
|
||||
## Datenbankschema
|
||||
|
||||
Für neu erzeugte Datenbanken steht die Spalte direkt in `database/schema.sql`:
|
||||
|
||||
```sql
|
||||
activated_at TEXT DEFAULT NULL
|
||||
```
|
||||
|
||||
Für bestehende SQLite-Datenbanken liegt weiterhin eine Migration vor:
|
||||
|
||||
```bash
|
||||
sqlite3 <pfad-zur-wegwichtel-db> < database/migrations/20260901_add_route_activated_at.sql
|
||||
```
|
||||
|
||||
Für neu erzeugte Datenbanken muss `database/schema.sql` die Spalte direkt in der `routes`-Tabelle enthalten:
|
||||
|
||||
```sql
|
||||
activated_at DATETIME NULL
|
||||
```
|
||||
|
||||
Falls das Paket ohne bereits angepasste `database/schema.sql` eingespielt wird, kann die Datei einmalig im Repository angepasst werden:
|
||||
|
||||
```bash
|
||||
node scripts/apply-editor-schema.mjs
|
||||
```
|
||||
|
||||
Danach sollte `database/schema.sql` mit committed werden.
|
||||
Die Migration darf nur auf Bestandsdatenbanken ohne `activated_at` ausgeführt werden. Auf einer frischen Datenbank, die schon mit dem aktuellen `database/schema.sql` erstellt wurde, ist sie nicht nötig.
|
||||
|
||||
## Tests
|
||||
|
||||
@@ -33,14 +42,6 @@ npm test -- test/editor-database-schema.test.js
|
||||
npm run test:coverage
|
||||
```
|
||||
|
||||
## SonarQube
|
||||
## Optionaler Cleanup
|
||||
|
||||
Der frühere HTML-Smell durch `role="status"` am Editorstatus wurde entfernt. Der Status ist jetzt ein semantisches `<output>` mit `aria-live="polite"`.
|
||||
|
||||
|
||||
## v4 SQLite-STRICT und Sonar-Hotspot
|
||||
|
||||
- `database/schema.sql` enthält `routes.activated_at` direkt im Initialschema als `TEXT DEFAULT NULL`.
|
||||
- Die Migration verwendet ebenfalls `TEXT DEFAULT NULL`, damit bestehende SQLite-STRICT-Datenbanken kompatibel bleiben.
|
||||
- `scripts/apply-editor-schema.mjs` enthält keine Schema-Merge-Regex mehr; der frühere Hilfsmechanismus wurde durch eine einfache lineare Schema-Prüfung ersetzt.
|
||||
- `test/editor-database-schema.test.js` prüft bewusst `TEXT DEFAULT NULL` und verbietet `DATETIME` in der STRICT-Route-Tabelle.
|
||||
`scripts/apply-editor-schema.mjs` war nur als Übergangshilfe gedacht. Nach diesem Paket ist das Initialschema direkt enthalten. Die Datei wird nicht mehr benötigt und kann entfernt werden, falls sie aus v3/v4 noch im Repository vorhanden ist.
|
||||
|
||||
Reference in New Issue
Block a user