Feature: Läufigkeit & Trächtigkeit — Zyklen, Progesterontests, Deckdaten, Meilensteine (SW by-v894)

This commit is contained in:
rene 2026-05-13 17:09:02 +02:00
parent 5a639d47a9
commit f3308a6a94
8 changed files with 997 additions and 8 deletions

View file

@ -2265,6 +2265,51 @@ def _migrate(conn_factory):
except Exception as e:
logger.warning(f"Migration behavior_log: {e}")
try:
conn.execute("""
CREATE TABLE IF NOT EXISTS laeufi_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
hund_id INTEGER NOT NULL REFERENCES zucht_hunde(id) ON DELETE CASCADE,
beginn TEXT NOT NULL,
ende TEXT,
notiz TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
)
""")
conn.execute("""
CREATE TABLE IF NOT EXISTS progesteron_tests (
id INTEGER PRIMARY KEY AUTOINCREMENT,
laeufi_id INTEGER NOT NULL REFERENCES laeufi_log(id) ON DELETE CASCADE,
datum TEXT NOT NULL,
wert REAL,
einheit TEXT NOT NULL DEFAULT 'ng/ml',
labor TEXT,
notiz TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
)
""")
conn.execute("""
CREATE TABLE IF NOT EXISTS deckdaten (
id INTEGER PRIMARY KEY AUTOINCREMENT,
hund_id INTEGER NOT NULL REFERENCES zucht_hunde(id) ON DELETE CASCADE,
laeufi_id INTEGER REFERENCES laeufi_log(id) ON DELETE SET NULL,
deckdatum TEXT NOT NULL,
ruede_id INTEGER REFERENCES zucht_hunde(id) ON DELETE SET NULL,
ruede_name TEXT,
deckart TEXT NOT NULL DEFAULT 'natuerlich',
traechtig INTEGER NOT NULL DEFAULT 0,
ultraschall_datum TEXT,
notiz TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
)
""")
conn.execute("CREATE INDEX IF NOT EXISTS idx_laeufi_hund ON laeufi_log(hund_id, beginn DESC)")
conn.execute("CREATE INDEX IF NOT EXISTS idx_prog_laeufi ON progesteron_tests(laeufi_id, datum)")
conn.execute("CREATE INDEX IF NOT EXISTS idx_deck_hund ON deckdaten(hund_id, deckdatum DESC)")
logger.info("Migration: laeufi_log, progesteron_tests, deckdaten bereit.")
except Exception as e:
logger.warning(f"Migration laeufi: {e}")
try:
conn.execute("""
CREATE TABLE IF NOT EXISTS litter_waitlist (