CREATE TABLE IF NOT EXISTS wedstrijden (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    naam TEXT NOT NULL,
    datum TEXT NOT NULL,
    status TEXT NOT NULL DEFAULT 'actief' CHECK(status IN ('actief', 'afgesloten')),
    created_at TEXT NOT NULL DEFAULT (datetime('now'))
);

-- Zorgt dat er nooit meer dan 1 actieve wedstrijd tegelijk bestaat.
CREATE UNIQUE INDEX IF NOT EXISTS idx_een_actieve_wedstrijd
    ON wedstrijden(status) WHERE status = 'actief';

CREATE TABLE IF NOT EXISTS banen (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    wedstrijd_id INTEGER NOT NULL REFERENCES wedstrijden(id),
    volgnummer INTEGER NOT NULL,
    discipline TEXT NOT NULL,
    aantal_duiven INTEGER NOT NULL,
    UNIQUE(wedstrijd_id, volgnummer)
);

-- Onderstaande tabellen worden pas gevuld/gebruikt in latere bouwstappen
-- (ledenlijst-upload, score-invoer), maar staan hier al vast in het schema.
CREATE TABLE IF NOT EXISTS schutters (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    voornaam TEXT NOT NULL,
    achternaam TEXT NOT NULL,
    created_at TEXT NOT NULL DEFAULT (datetime('now'))
);

CREATE TABLE IF NOT EXISTS inschrijvingen (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    wedstrijd_id INTEGER NOT NULL REFERENCES wedstrijden(id),
    schutter_id INTEGER REFERENCES schutters(id),
    rotte TEXT,
    UNIQUE(wedstrijd_id, schutter_id)
);

CREATE TABLE IF NOT EXISTS scores (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    inschrijving_id INTEGER NOT NULL REFERENCES inschrijvingen(id),
    baan_id INTEGER NOT NULL REFERENCES banen(id),
    totaal_geraakt INTEGER NOT NULL DEFAULT 0,
    tweede_schot_treffers INTEGER NOT NULL DEFAULT 0,
    UNIQUE(inschrijving_id, baan_id)
);

-- Eén rij (id vast op 1): vereniginsgegevens die overal in de header getoond worden.
CREATE TABLE IF NOT EXISTS instellingen (
    id INTEGER PRIMARY KEY CHECK (id = 1),
    vereniging_naam TEXT,
    logo_bestand TEXT
);
