Control de versiones colaborativo en PostgreSQL con migraciones
Trabajar en equipo con una base de datos puede ser complicado, especialmente cuando necesitas mantener sincronizada su estructura entre varios desarrolladores. Usar migraciones es la clave para gestionar los cambios en la base de datos de manera eficiente y asegurarte de que todos los miembros del equipo estén en la misma página.
Pasos para configurar migraciones colaborativas
Vamos a cubrir dos herramientas populares: Knex.js y Sequelize, que te ayudarán a crear, aplicar y versionar migraciones en PostgreSQL, todo dentro de un flujo de trabajo colaborativo.
1. Instalación de Knex.js y Sequelize
Primero, necesitas instalar Knex.js o Sequelize junto con el driver de PostgreSQL (pg). Aquí te mostramos cómo hacerlo:
npm install knex pg
npm install sequelize sequelize-cli pg
2. Configuración de Knex.js para migraciones
Una vez instalado Knex, inicializa el archivo de configuración:
knex init
Esto generará un archivo knexfile.js donde podrás configurar los entornos development y production con tus credenciales de PostgreSQL.
module.exports = {
development: {
client: 'pg',
connection: {
host: 'localhost',
user: 'myuser',
password: 'mypassword',
database: 'mydatabase',
port: 5432
},
migrations: {
directory: './migrations'
}
},
production: {
client: 'pg',
connection: process.env.DATABASE_URL,
migrations: {
directory: './migrations'
}
}
};
3. Creación de una migración con Knex
Ahora que Knex está configurado, puedes crear una migración para modificar la estructura de la base de datos:
knex migrate:make create_users_table
Esto generará un archivo de migración en el directorio migrations. Aquí tienes un ejemplo que crea una tabla de usuarios:
exports.up = function(knex) {
return knex.schema.createTable('users', (table) => {
table.increments('id').primary();
table.string('name');
table.string('email').unique();
table.timestamps(true, true);
});
};
exports.down = function(knex) {
return knex.schema.dropTable('users');
};
4. Ejecución de migraciones
Para aplicar las migraciones en la base de datos, usa el siguiente comando:
knex migrate:latest
Esto ejecutará todas las migraciones pendientes y mantendrá la estructura de la base de datos actualizada.
5. Uso de Sequelize para migraciones
Si prefieres Sequelize, sigue estos pasos después de instalarlo:
npx sequelize-cli init
Esto generará directorios para models, migrations y seeders. Luego, puedes configurar tu base de datos en config/config.json.
{
"development": {
"username": "myuser",
"password": "mypassword",
"database": "mydatabase",
"host": "127.0.0.1",
"dialect": "postgres"
}
}
6. Crear una migración con Sequelize
Genera una migración para crear la tabla de usuarios con el siguiente comando:
npx sequelize-cli migration:generate --name create-users-table
El archivo de migración generado puede verse así:
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('Users', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: Sequelize.STRING,
email: {
type: Sequelize.STRING,
unique: true
},
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('Users');
}
};
7. Ejecutar migraciones en Sequelize
Finalmente, para aplicar las migraciones en tu base de datos, usa:
npx sequelize-cli db:migrate