Volver a Blog tutorial

Control de versiones colaborativo en PostgreSQL con migraciones

3 min read vistas 1 leyendo ahora
Índice del artículo

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

Últimos artículos

... tip: teclea algo secreto (una pista... CAMILO)