teecup/062_round_hole_version.sql
Erol Haagenrud 17fac05ddc Alt kompilerer rent. Oppsummering av denne runden:
1. WHS Rule 3.1b — ferdig, testet (117/117), rullet ut... nei, venter fortsatt (se under).
2. round.tee_name_snapshot-synk — ferdig, scratch-verifisert.
3. Optimistisk versjonssjekk for samtidig hull-redigering — ferdig bygget, og jeg fant og rettet en reell UX-bug underveis (en fullskjerm-feilvisning i stedet for en liten banner) som ellers ville gjort funksjonen verre enn ingenting.

Alt er dokumentert i ADR-056/057 og CHANGELOG punkt 65–66.

Deploy — rekkefølgen har betydning (migrasjonen må kjøre først, siden ny kode leser version-kolonnen):

# 1. Migrasjon mot ekte teecup_db
docker exec teeoff_db psql -U teeoff_admin -d teecup_db -f /opt/teecup/062_round_hole_version.sql

# 2. Backend
docker compose build teecup_api
docker compose up -d teecup_api

# 3. Frontend
docker compose build teecup_frontend
docker compose up -d teecup_frontend
Og fortsatt uavklart fra tidligere: datakorreksjonen for din spesifikke runde

UPDATE round SET tee_name_snapshot = '55'
WHERE id = '520f9681-6e7f-49bf-8504-9ab223874285';
2026-08-10 18:34:31 +02:00

16 lines
919 B
SQL

-- ADR-057: enkel optimistisk versjonssjekk for samtidig hull-redigering.
-- Bruker ba eksplisitt om dette etter en ekstern kodegjennomgang som
-- påpekte at update_hole/update_side_hole tidligere var rent last-write-
-- wins (ADR-028, bevisst valgt den gangen, men bruker ønsket det endret):
-- to enheter som redigerer samme hull samtidig fikk INGEN varsel om at
-- den andres endring ble overskrevet.
--
-- Én delt `round_hole`-tabell dekker begge eierskapstyper (deltaker- og
-- side-eid, se round_hole_owner_xor) -- én kolonne holder for begge
-- endepunktene (update_hole og update_side_hole).
--
-- DEFAULT 1 (ikke 0): matcher at en fersk rad regnes som "versjon 1" fra
-- opprettelse -- en klient som nettopp har hentet et upåbegynt hull skal
-- kunne sende expected_version=1 og treffe riktig, ikke måtte vite at
-- "ubrukt" betyr 0.
ALTER TABLE round_hole ADD COLUMN version integer NOT NULL DEFAULT 1;