-- Dev/CI: pytest-Artefakte entfernen (idempotent, sicher mehrfach ausführbar). -- Nur in Nicht-Prod-Umgebungen (Dateiname *.dev.sql). -- Reparatur: ungültige Human-Actors (user_id NULL verletzt CHECK constraint) DELETE FROM actors WHERE actor_type = 'human' AND user_id IS NULL; -- AP0.5: Vorhaben/Maßnahmen pytest-Artefakte vor Actor-Löschung entfernen -- (initiatives.owner_actor_id → actors ON DELETE RESTRICT) DELETE FROM initiatives WHERE owner_actor_id IN ( SELECT id FROM actors WHERE user_id IN (SELECT id FROM users WHERE email ~* '@example\.com$') ); DELETE FROM initiatives i USING tenants t WHERE i.tenant_id = t.id AND t.slug ~ '^t-[a-f0-9]{10}$' AND NOT EXISTS ( SELECT 1 FROM tenant_memberships tm WHERE tm.tenant_id = t.id ); -- Abhängigkeiten vor User-Löschung (human actors: user_id NOT NULL constraint) DELETE FROM actors WHERE user_id IN (SELECT id FROM users WHERE email ~* '@example\.com$'); DELETE FROM tenant_memberships WHERE user_id IN (SELECT id FROM users WHERE email ~* '@example\.com$'); DELETE FROM sessions WHERE user_id IN (SELECT id FROM users WHERE email ~* '@example\.com$'); DELETE FROM audit_log WHERE user_id IN (SELECT id FROM users WHERE email ~* '@example\.com$'); DELETE FROM users WHERE email ~* '@example\.com$'; -- Verwaiste pytest-Tenants (Factory-Slug t-{10 hex}), ohne Memberships DELETE FROM actors a USING tenants t WHERE a.tenant_id = t.id AND t.slug ~ '^t-[a-f0-9]{10}$' AND NOT EXISTS ( SELECT 1 FROM tenant_memberships tm WHERE tm.tenant_id = t.id ); DELETE FROM tenants t WHERE t.slug ~ '^t-[a-f0-9]{10}$' AND NOT EXISTS ( SELECT 1 FROM tenant_memberships tm WHERE tm.tenant_id = t.id );