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.
taskbot/docs/how-to/adding-migration.md

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.