Remove deprecated ZnsLegacyParsersTest.kt, synchronize database schema with Exposed domain models (migration V010), add license-related fields to Reiter, integrate updated LicenseMatrixService fallback logic, improve ZnsImportService with file archiving, and add ZNS testing runbook.

This commit is contained in:
2026-04-06 01:45:49 +02:00
parent e94dc5a803
commit aa9e2da3a3
13 changed files with 260 additions and 283 deletions
@@ -0,0 +1,87 @@
-- V010: Synchronize Database Schema with Exposed Domain Models
-- Harmonisiert die Spaltennamen und Typen mit den aktuellen Kotlin-Definitionen.
-- 1. Tabelle VEREIN anpassen
ALTER TABLE verein RENAME COLUMN name TO verein_name;
ALTER TABLE verein DROP COLUMN IF EXISTS kurzname;
ALTER TABLE verein DROP COLUMN IF EXISTS oeps_region_nummer;
ALTER TABLE verein ADD COLUMN IF NOT EXISTS person_id UUID;
ALTER TABLE verein ADD COLUMN IF NOT EXISTS image_url VARCHAR(255);
ALTER TABLE verein ADD COLUMN IF NOT EXISTS hausnummer VARCHAR(10);
-- 2. Tabelle REITER anpassen
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS bundesland_nummer INTEGER;
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS reiter_lizenz VARCHAR(20);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS startkarte VARCHAR(20);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS fahr_lizenz VARCHAR(20);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS altersklasse_jg_jr_u25 VARCHAR(10);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS altersklasse_y VARCHAR(10);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS mitglieds_nummer INTEGER;
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS telefon_nummer VARCHAR(50);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS kader VARCHAR(50);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS last_pay_year INTEGER;
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS geschlecht VARCHAR(10);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS sperr_liste VARCHAR(50);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS lizenz_info VARCHAR(100);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS lizenz_klasse VARCHAR(20) DEFAULT 'LIZENZFREI';
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS image_url VARCHAR(255);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS website VARCHAR(255);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS strasse VARCHAR(200);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS hausnummer VARCHAR(10);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS plz VARCHAR(10);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS ort VARCHAR(100);
ALTER TABLE reiter ADD COLUMN IF NOT EXISTS bundesland VARCHAR(100);
-- 3. Tabelle HORSE anpassen (in Exposed "HorseTable" aber in SQL "horse")
ALTER TABLE horse ADD COLUMN IF NOT EXISTS kopfnummer VARCHAR(4);
ALTER TABLE horse ADD COLUMN IF NOT EXISTS geburtsjahr INTEGER;
ALTER TABLE horse ADD COLUMN IF NOT EXISTS abstammung VARCHAR(100);
ALTER TABLE horse ADD COLUMN IF NOT EXISTS verein_nummer INTEGER;
ALTER TABLE horse ADD COLUMN IF NOT EXISTS last_pay_year INTEGER;
ALTER TABLE horse ADD COLUMN IF NOT EXISTS vater VARCHAR(200);
ALTER TABLE horse ADD COLUMN IF NOT EXISTS fei_pass VARCHAR(50);
ALTER TABLE horse ADD COLUMN IF NOT EXISTS satznummer VARCHAR(10);
-- Aufräumen von Feldern die nicht im Exposed Model sind (aus V006)
ALTER TABLE horse DROP COLUMN IF EXISTS geburtsdatum;
ALTER TABLE horse DROP COLUMN IF EXISTS rasse;
ALTER TABLE horse DROP COLUMN IF EXISTS besitzer_id;
ALTER TABLE horse DROP COLUMN IF EXISTS zuechter_name;
ALTER TABLE horse DROP COLUMN IF EXISTS zuchtbuch_nummer;
ALTER TABLE horse DROP COLUMN IF EXISTS chip_nummer;
ALTER TABLE horse DROP COLUMN IF EXISTS pass_nummer;
ALTER TABLE horse DROP COLUMN IF EXISTS oeps_nummer;
ALTER TABLE horse DROP COLUMN IF EXISTS fei_nummer;
ALTER TABLE horse DROP COLUMN IF EXISTS vater_name;
ALTER TABLE horse DROP COLUMN IF EXISTS mutter_name;
ALTER TABLE horse DROP COLUMN IF EXISTS mutter_vater_name;
ALTER TABLE horse DROP COLUMN IF EXISTS stockmass;
-- 4. Tabelle FUNKTIONAER anpassen
ALTER TABLE funktionaer DROP COLUMN IF EXISTS richter_nummer;
ALTER TABLE funktionaer DROP COLUMN IF EXISTS vorname;
ALTER TABLE funktionaer DROP COLUMN IF EXISTS nachname;
ALTER TABLE funktionaer DROP COLUMN IF EXISTS geburtsdatum;
ALTER TABLE funktionaer DROP COLUMN IF EXISTS vereins_nummer;
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS person_id UUID;
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS satz_id VARCHAR(1);
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS satz_nummer INTEGER;
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS name VARCHAR(200);
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS image_url VARCHAR(255);
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS website VARCHAR(255);
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS strasse VARCHAR(200);
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS hausnummer VARCHAR(10);
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS plz VARCHAR(10);
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS ort VARCHAR(100);
ALTER TABLE funktionaer ADD COLUMN IF NOT EXISTS bundesland VARCHAR(100);
-- 5. Qualifikations-Tabelle für Funktionäre
CREATE TABLE IF NOT EXISTS funktionaer_qualifikation (
funktionaer_id UUID NOT NULL REFERENCES funktionaer(funktionaer_id),
qualifikation VARCHAR(20) NOT NULL,
PRIMARY KEY (funktionaer_id, qualifikation)
);
-- Indizes (Exposed-Style)
CREATE UNIQUE INDEX IF NOT EXISTS idx_horse_satznummer ON horse (satznummer);
CREATE UNIQUE INDEX IF NOT EXISTS idx_reiter_satznummer ON reiter (satznummer);
CREATE UNIQUE INDEX IF NOT EXISTS idx_funktionaer_satz ON funktionaer (satz_id, satz_nummer);