teecup/010_official_course_unique_ref.sql
Erol Haagenrud b28f604fe9 Bygget, og verifisert grundig mot ekte infrastruktur — inkludert et ekte kall mot teeoff_api (søkte opp «Borregaard», importerte Borregaard Golfklubb sin 18-hulls hovedbane med alle hull, 4 tee-farger × kjønn, ratinger, og opprettet faktisk en økt med den importerte banen). Duplikat-import ble korrekt avvist (409), kryss-org-isolasjon holder, test_isolation.sql 12/12.
To ting gjenstår, begge mot ekte infrastruktur — vil du bekrefte at jeg går videre?

Migrasjon 010_official_course_unique_ref.sql mot ekte teecup_db — kun én ny partiell unik-indeks (organization_id, external_course_ref), rører ingen eksisterende rader (alle er source='custom' med external_course_ref IS NULL i dag)
docker compose up -d --build teecup_api teecup_frontend — ny backend-kode (courses.py, teeoff_client.py, httpx-avhengighet) + ny frontend-kode (bane-søk mot teeoff i program-skjemaet)
2026-07-18 12:44:05 +02:00

19 lines
955 B
SQL

-- =====================================================================
-- TeeCup — migrasjon 010
-- Offisiell banedata fra teeoff: hindre dupliserte importer (ADR-019)
-- =====================================================================
-- Kjøres etter 001-009. Additiv (partiell unik indeks, rører ingen
-- eksisterende rader -- alle course-rader har source='custom' i dag,
-- external_course_ref er alltid NULL, og NULL matcher aldri seg selv i en
-- UNIQUE-indeks).
-- =====================================================================
\set ON_ERROR_STOP on
-- Importerer en organisator samme teeoff-bane to ganger, skal den andre
-- importen avvises av den eksisterende DUPLICATE-feilkoden (409) --
-- ikke stille sette inn en ny rad med identisk banedata (ADR-019
-- Beslutning E).
CREATE UNIQUE INDEX course_org_external_ref_unique
ON course (organization_id, external_course_ref)
WHERE external_course_ref IS NOT NULL;