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.
'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');
}
};
id
INTEGERallowNull: false: No puede ser nulo.autoIncrement: true: Se incrementa automáticamente.primaryKey: true: Es la clave primaria de la tabla.username
STRINGallowNull: false: No puede ser nulo.unique: true: Debe ser único para evitar duplicados.email
STRINGallowNull: false: No puede ser nulo.unique: true: Debe ser único.validate: { isEmail: true }: Asegura que el formato sea un correo electrónico válido.password
STRINGallowNull: false: No puede ser nulo.telefono
STRINGallowNull: true: Puede ser nulo.createdAt
DATEallowNull: false: No puede ser nulo.defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'): Valor por defecto es la marca de tiempo actual.updatedAt
DATEallowNull: false: No puede ser nulo.defaultValue: Sequelize.literal('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'): Valor por defecto es la marca de tiempo actual y se actualiza automáticamente al modificar el registro.up
users con los campos descritos anteriormente.down
users de la base de datos.