-- v0.4.1-beta: een klasnaam mag niet dubbel voorkomen binnen dezelfde school. -- Zonder deze constraint kon "Nieuwe klas" herhaaldelijk dezelfde naam -- aanmaken (bv. na een eerdere poging die door een andere bug leek te -- mislukken, maar stiekem toch al aanmaakte) - de app-laag controleert dit nu -- ook (POST /admin/classes), maar de database-constraint is het echte vangnet. -- -- Bestaande dubbele klasnamen eerst uniek maken: anders faalt de CREATE -- UNIQUE INDEX hieronder op een database die deze bug al heeft laten -- ontstaan (en dan start de app helemaal niet meer op). Er wordt niets -- verwijderd, alleen de latere dubbele naam hernoemd - de klas, z'n -- leerlingen en koppelingen blijven ongemoeid. DO $$ DECLARE r RECORD; BEGIN FOR r IN SELECT id, name, ROW_NUMBER() OVER (PARTITION BY school_id, lower(name) ORDER BY id) AS rn FROM classes LOOP IF r.rn > 1 THEN UPDATE classes SET name = r.name || ' (' || r.rn || ')' WHERE id = r.id; END IF; END LOOP; END $$; CREATE UNIQUE INDEX IF NOT EXISTS idx_classes_school_name ON classes (school_id, lower(name));