Skip to content

feat(db): Hito 2 — esquema y RLS de events + push_tokens (I-F-N05-01-01, I-F-N05-01-03, I-F-N06-01-01)#242

Merged
Azfe merged 4 commits into
developfrom
feat/hito2-db-events-push-schema
Jul 16, 2026
Merged

feat(db): Hito 2 — esquema y RLS de events + push_tokens (I-F-N05-01-01, I-F-N05-01-03, I-F-N06-01-01)#242
Azfe merged 4 commits into
developfrom
feat/hito2-db-events-push-schema

Conversation

@Azfe

@Azfe Azfe commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Resumen

Prepara la base de datos para el Hito 2 (MVP Calendario + Notificaciones Push):
completa el esquema de events y push_tokens con migraciones aditivas y
corrige las policies RLS de events al modelo definitivo (manager own).
Desbloquea la implementación del CRUD de eventos, la vista de calendario y el
registro de tokens push.

Cambios

events — migración aditiva (I-F-N05-01-01)

  • Enum event_color con la paleta de eventos de DESIGN.md:
    brown (reuniones) · sea (formaciones) · sage (externos) · amber (urgente) · parchment (cierre de temporada).
  • Columnas nuevas: all_day boolean default false, color_tag event_color default 'brown'.
  • Constraints de longitud: title 1–200, description ≤5000, location ≤200.
  • author_id pasa a nullable con FK ON DELETE SET NULL: los eventos
    corporativos se conservan si se elimina el perfil del autor.
  • Índice events_color_tag_idx + comentarios de semántica en columnas.

events — RLS correctiva (I-F-N05-01-03)

  • Elimina las policies permisivas de 20260618400000_rls_events.sql, donde
    cualquier manager podía escribir sobre cualquier evento.
  • Policies definitivas: INSERT fuerza author_id = auth.uid(); UPDATE/DELETE
    solo admin o propietario; eventos huérfanos (author_id null) solo admin.
  • SELECT sin cambios (cualquier autenticado).

push_tokens — migración aditiva (I-F-N06-01-01)

  • Columnas device_name y last_seen_at + índice push_tokens_last_seen_idx,
    base para la purga de tokens con >60 días de inactividad.
  • RLS existentes sin cambios.

Tipos

  • lib/database.types.ts actualizado (enum event_color y columnas nuevas).
    Delta aplicado a mano siguiendo las convenciones del generador: esta versión
    del CLI exige supabase login incluso para gen types --local. Tras login,
    regenerar para normalizar (debería producir el mismo contenido).

Decisiones aplicadas (cerradas el 2026-07-16 en Notion)

Decisión Resultado
Permisos de manager sobre events Solo own (consistente con posts y ADR-002-rbac)
Borrado de autor con eventos Conservar eventos (ON DELETE SET NULL)
Paleta color_tag La de DESIGN.md (5 colores con semántica de negocio)

Verificación

  • supabase db reset: las 3 migraciones aplican sin errores sobre el histórico completo.
  • supabase test db supabase/tests/rls/: 206 tests en 24 ficheros, todos en verde, incluidos:
    • rls_events.sql reescrito: 15 casos (positivo + negativo por operación y rol,
      suplantación de author_id, eventos huérfanos).
    • schema_events.sql y schema_push_tokens.sql nuevos (estructura, enum,
      defaults, constraint de longitud, regla SET NULL de la FK).
  • tsc --noEmit: limpio.

Notas para el reviewer

  • ⚠️ Al hacer db push a producción, la migración RLS endurece permisos:
    si algún manager editaba eventos ajenos, dejará de poder. Es el comportamiento
    decidido, pero conviene avisar antes del despliegue.
  • El orden de las migraciones importa: las policies own asumen el author_id
    nullable de la migración anterior.

@Azfe
Azfe merged commit a44115e into develop Jul 16, 2026
6 checks passed
@Azfe
Azfe deleted the feat/hito2-db-events-push-schema branch July 16, 2026 14:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant