Actualización de Migraciones en TimeWareM 0.3
Clase 34 de 36 • Curso de NestJS: Persistencia de Datos con TypeORM
Resumen
¿Cómo adaptar las migraciones a la nueva versión de TimeWareM?
En el mundo del desarrollo de software, las actualizaciones de versiones pueden traer cambios radicales que nos obligan a ajustar nuestro código. Este es el caso de la actualización a TimeWareM 0.3, donde se introduce un cambio crucial en el sistema de migraciones. Las migraciones en bases de datos relacionales son la base para mantener una estructura de datos ordenada y eficiente. Con TimeWareM 0.3, nos enfrentamos al desafío de actualizar nuestros scripts de migración para adecuarlos a esta nueva versión.
¿Cuál es el cambio principal en el sistema de migraciones?
Recientemente, TimeWareM ha introducido un requisito esencial: el uso de una fuente de datos específica para las migraciones. Anteriormente, utilizábamos el comando npm run migrations
junto a migrations.run
para ejecutarlas. Sin embargo, ahora es necesario proporcionar un "data source", lo cual implica una reorganización en cómo configuramos nuestras migraciones.
Tome en cuenta estos puntos clave al ajustar sus scripts:
- Reemplazo de variables de entorno: Las variables de entorno ya no son leídas. Si anteriormente se utilizaban estos para las conexiones, o el archivo
ORMConfig.json
, deben ser reemplazados por un "data source" explícito. - Nueva configuración de migraciones: Debe crearse un archivo
data source
, proporcionando todas las opciones de conexión de manera similar a las configuraciones vivas de la aplicación. A continuación se muestra cómo definir este "data source":
import { DataSource } from 'timewarem';
export const appDataSource = new DataSource({
type: 'postgres',
url: process.env.DATABASE_URL,
synchronize: false,
logging: false,
entities: ['path/to/entities/*.{js,ts}'],
migrations: ['path/to/migrations/*.{js,ts}'],
});
¿Qué ajustes se necesitan en package.json
?
Con esta nueva arquitectura, ciertos scripts en package.json
requerirán actualizaciones. Previamente, el sistema leía configuraciones desde ORMConfig.json
o directamente de las variables de entorno. Ahora, sigue estos pasos para adecuar tu archivo package.json
:
- Actualizar los comandos de migración: Cambie la forma en que ejecuta comandos de migración, ahora es necesario especificar
ts-node
yesm
. Use el flag-d
para especificar el "data source".
{
"scripts": {
"migrations:run": "timewarem ts-node -d path/to/dataSource.ts migration:run",
"migrations:generate": "timewarem ts-node -d path/to/dataSource.ts migration:generate -o path/to/newMigration"
}
}
- Manejo de rutas: Asegúrese de indicar la ruta exacta donde desea que se almacenen las migraciones generadas.
¿Cómo asegurar la seguridad con variables de entorno?
Al hacer despliegues en servicios como AWS o Heroku, omitir datos sensibles en el código es crucial. Utilice variables de entorno para garantizar la seguridad:
-
Instalación y configuración de dotenv: Utilice
dotenv
para manejar estas variables de entorno. Instaledotenv
si no lo ha hecho:npm install dotenv
-
Carga y utilización en
data source
:
import * as dotenv from 'dotenv';
dotenv.config();
export const appDataSource = new DataSource({
url: process.env.DATABASE_URL,
...
});
Con estos pasos, hemos logrado ajustar nuestro sistema de migraciones en TimeWareM para que se ejecute fluidamente. Siempre recuerda que las migraciones son críticas para mantener la integridad de tu base de datos y deben realizarse con cuidado para evitar problemas en producción. ¡Sigue explorando y aprendiendo para mantenerte al día con las mejores prácticas de desarrollo!