2.2 KiB
Wegwichtel Editor v5
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_atnicht 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-expandedundaria-controls; beim Öffnen und Schließen wirdaria-expandedsynchronisiert. - POI-Sortierpfeile sind am Listenanfang beziehungsweise Listenende deaktiviert.
- Das Initialschema enthält zusätzlich
idx_routes_activationfür spätere veröffentlichte Listenabfragen nachstatusundactivated_at. - POIs erhalten analog zu Strecken einen
pois_updated_at-Trigger, damitupdated_atbei Bearbeitungen automatisch aktualisiert wird. - Die Dokumentation verwendet durchgehend
TEXT DEFAULT NULLstatt des für SQLite-STRICT falschenDATETIME.
Datenbankschema
Für neu erzeugte Datenbanken steht die Spalte direkt in database/schema.sql:
activated_at TEXT DEFAULT NULL
Für bestehende SQLite-Datenbanken liegt weiterhin eine Migration vor:
sqlite3 <pfad-zur-wegwichtel-db> < database/migrations/20260901_add_route_activated_at.sql
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
node --check public/js/editor-ui.js
npm test -- test/editor-ui.test.js
npm test -- test/editor-database-schema.test.js
npm run test:coverage
Optionaler Cleanup
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.