"""Kleine Helfer zum Aufbau von Testdaten.""" from __future__ import annotations from datetime import date from sqlalchemy import select from oamc.models import ( Ergebnis, Fahrer, Klasse, Start, Turnier, Veranstaltung, Verein, ) from oamc.models.enums import StartStatus, TurnierStatus, VeranstaltungStatus def klasse(db, code="J 3"): return db.scalars(select(Klasse).where(Klasse.code == code, Klasse.saison_jahr == 2026)).one() def verein(db, name="OAMC Reinheim e.V. im ADAC"): return db.scalars(select(Verein).where(Verein.name == name)).first() def veranstaltung(db, *, datum=date(2026, 5, 31), titel="Testturnier", status=VeranstaltungStatus.LAUFEND): v = Veranstaltung(datum=datum, titel=titel, ort="Reinheim", status=status, ist_doppelturnier=False) db.add(v) db.flush() return v def turnier(db, v=None, *, name="Reinheim", zaehlt_meisterschaft=True, aktiv=False, status=TurnierStatus.LAUFEND, flush=True): v = v or veranstaltung(db) t = Turnier( veranstaltung_id=v.id, name=name, zaehlt_meisterschaft=zaehlt_meisterschaft, ist_aktiv=aktiv, status=status, ) db.add(t) if flush: db.flush() return t def fahrer(db, nachname="Mustermann", vorname="Max", geburtsjahr=2014): f = Fahrer(nachname=nachname, vorname=vorname, geburtsjahr=geburtsjahr) db.add(f) db.flush() return f def start(db, t, f, k, *, startnummer, status=StartStatus.GESTARTET, wertungsklasse_id=None, flush=True): s = Start( turnier_id=t.id, fahrer_id=f.id, klasse_id=k.id, startnummer=startnummer, status=status, wertungsklasse_id=wertungsklasse_id, ) db.add(s) if flush: db.flush() return s def ergebnis(db, s, *, zeit=None, fehler=None, zeit_fertig=True, fehler_fertig=True): e = Ergebnis( start_id=s.id, summe_zeit=zeit, summe_fehler=fehler, zeit_vollstaendig=zeit_fertig, fehler_vollstaendig=fehler_fertig, ) db.add(e) db.flush() return e