feat: integrate new desktop shell and extend backend & ADRs
- Added `meldestelle-desktop` module using JVM/Compose Desktop, registered in `settings.gradle.kts`. - Integrated new screens and desktop navigation into core: `Veranstaltungen`, `TurnierDetail`, etc. - Expanded backend with `ExposedFunktionaerRepository` in `officials-infrastructure`. - Completed ADRs for bounded context mapping (`ADR-0014`) and context map (`ADR-0015`). - Updated and extended project documentation with session logs and architecture decisions. Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
+87
@@ -0,0 +1,87 @@
|
||||
-- Migration V001: Create Reiter (Riders) table
|
||||
-- Speichert alle Reiter-Daten inkl. Lizenz, Sparten (JSON) und ZNS-Identifikation.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS reiter
|
||||
(
|
||||
id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY
|
||||
DEFAULT
|
||||
gen_random_uuid
|
||||
(
|
||||
),
|
||||
satznummer VARCHAR
|
||||
(
|
||||
20
|
||||
),
|
||||
fei_id VARCHAR
|
||||
(
|
||||
20
|
||||
),
|
||||
vorname VARCHAR
|
||||
(
|
||||
100
|
||||
) NOT NULL,
|
||||
nachname VARCHAR
|
||||
(
|
||||
100
|
||||
) NOT NULL,
|
||||
geburtsdatum DATE,
|
||||
nation VARCHAR
|
||||
(
|
||||
3
|
||||
) DEFAULT 'AUT',
|
||||
vereins_nummer VARCHAR
|
||||
(
|
||||
20
|
||||
),
|
||||
vereins_name VARCHAR
|
||||
(
|
||||
200
|
||||
),
|
||||
lizenz_klasse VARCHAR
|
||||
(
|
||||
50
|
||||
),
|
||||
lizenziert_fuer_sparten TEXT NOT NULL DEFAULT '[]',
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
ist_gastreiter BOOLEAN NOT NULL DEFAULT false,
|
||||
bemerkungen TEXT,
|
||||
daten_quelle VARCHAR
|
||||
(
|
||||
50
|
||||
) NOT NULL DEFAULT 'IMPORT_ZNS',
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Unique Indizes für ZNS-Identifikation
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uk_reiter_satznummer ON reiter(satznummer) WHERE satznummer IS NOT NULL;
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uk_reiter_fei_id ON reiter(fei_id) WHERE fei_id IS NOT NULL;
|
||||
|
||||
-- Performance-Indizes
|
||||
CREATE INDEX IF NOT EXISTS idx_reiter_nachname ON reiter(nachname);
|
||||
CREATE INDEX IF NOT EXISTS idx_reiter_vorname ON reiter(vorname);
|
||||
CREATE INDEX IF NOT EXISTS idx_reiter_vereins_nummer ON reiter(vereins_nummer);
|
||||
CREATE INDEX IF NOT EXISTS idx_reiter_ist_aktiv ON reiter(ist_aktiv);
|
||||
CREATE INDEX IF NOT EXISTS idx_reiter_lizenz_klasse ON reiter(lizenz_klasse);
|
||||
CREATE INDEX IF NOT EXISTS idx_reiter_ist_gastreiter ON reiter(ist_gastreiter);
|
||||
|
||||
-- Dokumentation
|
||||
COMMENT
|
||||
ON TABLE reiter IS 'Reiter/Teilnehmer gemäß OEPS-Mitgliederregister (ZNS)';
|
||||
COMMENT
|
||||
ON COLUMN reiter.id IS 'Eindeutige interne ID (UUID)';
|
||||
COMMENT
|
||||
ON COLUMN reiter.satznummer IS 'OEPS-Satznummer (Mitgliedsnummer, eindeutig)';
|
||||
COMMENT
|
||||
ON COLUMN reiter.fei_id IS 'FEI-ID für internationale Starts (eindeutig)';
|
||||
COMMENT
|
||||
ON COLUMN reiter.lizenz_klasse IS 'Lizenzklasse (LizenzKlasseE): LIZENZFREI, AMATEUR, PROFI, etc.';
|
||||
COMMENT
|
||||
ON COLUMN reiter.lizenziert_fuer_sparten IS 'JSON-Array der lizenzierten Sparten (SparteE)';
|
||||
COMMENT
|
||||
ON COLUMN reiter.ist_gastreiter IS 'Gastreiter ohne OEPS-Mitgliedschaft (z.B. ausländische Starter)';
|
||||
COMMENT
|
||||
ON COLUMN reiter.daten_quelle IS 'Datenherkunft: MANUELL, IMPORT_ZNS, IMPORT_FEI';
|
||||
Reference in New Issue
Block a user