Repository navigation
build: adopta Flyway para versionar el esquema (ADR-0006) - #4
Merged
Merged
Conversation
- schema.sql y rls.sql pasan a ser las migraciones V1 y V2 en src/main/resources/db/migration. - Las bases anteriores a Flyway (Supabase y las locales) se marcan con la línea base 0 y vuelven a recibir V1 y V2, que son idempotentes. - ddl-auto=validate en todos los perfiles: las pruebas de integración corren sobre el esquema real, con sus triggers y restricciones. - RLS para flyway_schema_history con un callback afterMigrate. Ponerlo en V2 bloqueaba la migración, porque Flyway tiene la tabla bloqueada mientras migra. - Nuevas pruebas: DatabaseMigrationsIT (base vacía, reglas de la base de datos, ninguna tabla sin RLS). CloudProfileContextIT simula la primera migración de Supabase. - El workflow de base de datos aplica las migraciones y comprueba que ninguna tabla quede sin RLS. README, runbook y la guía de base de datos quedan al día. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Qué cambia
Flyway pasa a ser la única forma de cambiar el esquema (ADR-0006). Es el primer habilitador del Sprint 2: HU-002, 003, 004, 006 y 009 cambian el esquema, y sin migraciones esos cambios chocarían en un solo
schema.sql.docs/database/schema.sqlyrls.sqlse mueven asrc/main/resources/db/migration/comoV1__esquema_inicial.sqlyV2__rls.sql. El DDL no cambia. A partir de ahora, ningún cambio de esquema edita V1 ni V2: cada cambio es una migración nueva (V3, V4…).ddl-auto=validateen todos los perfiles. Antes, las pruebas usabancreate-drop, así que los triggers, losexcludey loscheckdel esquema nunca actuaban en ellas. Ahora sí.baseline-on-migrateybaseline-version: 0, Flyway las marca como anteriores a V1 y les vuelve a aplicar V1 y V2. Como los dos scripts son idempotentes, solo crean lo que falte.flyway_schema_history: Supabase exponepublicpor el Data API, así que esta tabla también necesita RLS. Va en el callbackafterMigrate__rls_historial_flyway.sqly no en V2, porque Flyway tiene la tabla bloqueada mientras migra y V2 se quedaba esperando para siempre.database.yml: aplica las migraciones en orden, comprueba que V1 y V2 sigan siendo idempotentes y falla si alguna tabla depublicqueda sin RLS.docs/databaseactualizados.Pruebas
mvn clean verifyen local con JDK 21: 619 unitarias y 64 de integración en verde, y JaCoCo cumple el umbral.DatabaseMigrationsIT(nueva) comprueba tres cosas sobre una base vacía: que se migra desde V1, que existen las reglas que solo viven en la base de datos (trigger de reservas yexcludede recursos) y que ninguna tabla depublicqueda sin RLS.CloudProfileContextITahora simula la primera migración en Supabase: aplica V1 y V2 a mano, arranca el perfilcloudy comprueba que el historial queda en0 BASELINE,1 SQL,2 SQL.Al revisar y desplegar
.envque apunte a Supabase. Aplicaría a la base compartida las migraciones de la rama antes de la revisión. Para desarrollar en local estádocker compose up -d db.docs/operations/runbook.md, paso 5): el historial con0 BASELINE,1 SQL,2 SQL, y ninguna tabla sin RLS.🤖 Generated with Claude Code