diff --git a/supabase/seed.sql b/supabase/seed.sql index b3163cb..796ddda 100644 --- a/supabase/seed.sql +++ b/supabase/seed.sql @@ -12,7 +12,10 @@ -- -- ⚠ SOLO ENTORNOS DE DESARROLLO — nunca ejecutar en producción. -- En producción: aplicar migraciones manualmente vía CLI del VPS. --- El seed elimina respuestas y preguntas previas de las 3 encuestas. +-- El seed SOLO reemplaza catálogo (questions de las 3 encuestas vía +-- DELETE+INSERT). NUNCA toca answers/consent_records/responses — son +-- evidencia permanente (ADR-003); el trigger de inmutabilidad lo +-- impide y no se debe forzar. Reset de datos de prueba: TRUNCATE aparte. -- -- Flujo declarativo (ADR-005 — lógica en datos, renderer es puro): -- 3.1 = 'No' → oculta 3.2–3.5 (discapacidad propia no aplica) @@ -255,20 +258,9 @@ BEGIN FOREACH sid IN ARRAY survey_ids LOOP -- ════════════════════════════════════════════════════════════ - -- Limpiar datos previos en orden de dependencia FK (solo en dev). - -- consent_records es padre de responses (responses.consent_record_id → consent_records.id), - -- así que se borran los responses primero y se capturan sus consent_record_id para - -- eliminar esos registros recién después (huérfanos), nunca antes. - DELETE FROM public.answers - WHERE response_id IN (SELECT id FROM public.responses WHERE survey_id = sid); - - WITH del_responses AS ( - DELETE FROM public.responses WHERE survey_id = sid - RETURNING consent_record_id - ) - DELETE FROM public.consent_records - WHERE id IN (SELECT consent_record_id FROM del_responses); - + -- Catálogo: DELETE + INSERT para idempotencia (patrón original del seed v2.1). + -- Nunca toca answers/consent_records/responses — son evidencia permanente (ADR-003). + -- El reset de datos de prueba se hace por separado vía TRUNCATE, fuera de este seed. DELETE FROM public.questions WHERE survey_id = sid; -- ════════════════════════════════════════════════════════