Descripción

Esta migración crea una tabla llamada users en la base de datos con los campos necesarios para almacenar información básica de los usuarios, como su nombre de usuario, correo electrónico, contraseña, y teléfono. Además, incluye las columnas createdAt y updatedAt para el control temporal de los registros.

Código de la migración

'use strict';

module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.createTable('users', {
      id: {
        type: Sequelize.INTEGER,
        allowNull: false,
        autoIncrement: true,
        primaryKey: true
      },
      username: {
        type: Sequelize.STRING,
        allowNull: false,
        unique: true, // El nombre de usuario debe ser único
      },
      email: {
        type: Sequelize.STRING,
        allowNull: false,
        unique: true, // El correo debe ser único
        validate: {
          isEmail: true, // Validación de email
        }
      },
      password: {
        type: Sequelize.STRING,
        allowNull: false,
      },
      telefono: {
        type: Sequelize.STRING,
        allowNull: true,
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE,
        defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE,
        defaultValue: Sequelize.literal('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'),
      }
    });
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.dropTable('users');
  }
};

Detalle de los campos

  1. id
  2. username
  3. email
  4. password
  5. telefono
  6. createdAt
  7. updatedAt

Funciones incluidas

  1. up
  2. down