You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.0 KiB
Markdown
29 lines
1.0 KiB
Markdown
# Cómo añadir una migración
|
|
|
|
Contexto
|
|
- Migraciones up-only con checksum estático y función `up(db)`.
|
|
|
|
Pasos
|
|
1) Crear migración
|
|
- Edita src/db/migrations/index.ts y añade una entrada `Migration` con:
|
|
- version (número incremental),
|
|
- name (descriptivo),
|
|
- checksum (string calculado una vez),
|
|
- up: (db) => { ... } con SQL idempotente cuando sea posible (usa helpers como tableHasColumn).
|
|
|
|
2) SQL y convenciones
|
|
- Timestamps como 'YYYY-MM-DD HH:MM:SS[.mmm]' con strftime.
|
|
- FOREIGN KEYs explícitas y `PRAGMA foreign_keys = ON`.
|
|
- Usa `ON CONFLICT` para upserts cuando aplique.
|
|
|
|
3) Pruebas
|
|
- En un test, crea `const memdb = new Database(':memory:')` y ejecuta `initializeDatabase(memdb)`.
|
|
- Valida que la tabla/columna existe y que el esquema es el esperado.
|
|
|
|
4) Despliegue
|
|
- El arranque (`server.start`) invoca `Migrator.migrateToLatest`. No necesitas pasos manuales.
|
|
|
|
Notas
|
|
- No hay “down”; si necesitas revertir, crea una nueva migración correctiva.
|
|
- Evita cambios destructivos sin plan de migración de datos.
|