Saltar al contenido
Banco de tareas

ARQ-001ArquitecturaAntes de lanzar

Convertir schema.sql en migraciones versionadas y re-ejecutables

Dificultad
Avanzada
Estimación
3d
Estado
En revisión · @dumonde-lab
Habilidades
postgressqlsupabase-clirls

Zona sensible. Toca permisos, datos personales, el mapa, secretos o la identidad de marca. Necesita revisión de la titular y conviene haber completado alguna tarea antes.

Contexto

supabase/schema.sql es un único archivo que no se puede volver a ejecutar: las políticas se crean sin drop policy if exists y alter publication supabase_realtime add table falla si la tabla ya está. Una asociación que despliega hoy no tiene forma segura de actualizar su base mañana. Es el bloqueo principal para la durabilidad y para el modelo multi-instancia.

Qué hacer

  1. Crea supabase/migrations/ con la convención de Supabase CLI (<AAAAMMDDHHMMSS>_<dominio>_<que>.sql).
  2. Copia el esquema actual, sin cambios de comportamiento, en una migración de línea base …_base.sql. Mueve el insert into foros a supabase/seed.sql.
  3. Separa en …_compat_supabase.sql lo propio de Supabase (publicación realtime, grants a anon/authenticated) y documenta qué haría falta para Postgres puro (shim auth.uid()).
  4. Sustituye schema.sql por un aviso que remita a migrations/: que no haya dos fuentes de verdad.
  5. Documenta en README y docs/guias/asociaciones.md cómo instalar desde cero (supabase db push) y cómo marcar la línea base en una instancia existente (supabase migration repair --status applied <versión>).
  6. Añade a CONTRIBUIR: las migraciones publicadas no se editan; lo destructivo, en dos pasos (expand/contract).

Criterios de aceptación

  • Aplicar todas las migraciones sobre un Postgres vacío (supabase db reset) termina sin errores

  • El pg_dump --schema-only resultante equivale al del schema.sql actual

  • Una base creada con el schema.sql antiguo queda al día marcando la línea base y aplicando db push, sin pérdida de datos

  • README y docs/guias/asociaciones.md ya no dicen «pega y ejecuta schema.sql»

  • La titular revisa el PR (toca RLS)

Archivos

Todo lo demás