Esta migración crea la tabla perfil_usuarios en la base de datos, diseñada para almacenar información adicional sobre el perfil de los usuarios, como su resumen profesional, ubicación y la fecha de su última actualización. Además, esta tabla establece una relación con la tabla users mediante la clave foránea usuarioId.
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('perfil_usuarios', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true
},
resumenProfesional: {
type: Sequelize.TEXT,
allowNull: true, // Permite que sea opcional
},
ubicacion: {
type: Sequelize.STRING,
allowNull: true, // Permite que sea opcional
},
fechaUltimaActualizacion: {
type: Sequelize.DATE,
allowNull: true, // Permite que sea opcional
},
usuarioId: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: 'users', // Asegúrate de usar el nombre correcto de la tabla
key: 'id',
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE',
},
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('perfil_usuarios');
}
};
id
INTEGERallowNull: false: No puede ser nulo.autoIncrement: true: Se incrementa automáticamente.primaryKey: true: Es la clave primaria de la tabla.resumenProfesional
TEXTallowNull: true: Puede ser nulo, ya que es opcional.ubicacion
STRINGallowNull: true: Puede ser nulo, ya que es opcional.fechaUltimaActualizacion
DATEallowNull: true: Puede ser nulo, ya que es opcional.usuarioId
INTEGERallowNull: false: No puede ser nulo, ya que es necesario para establecer la relación.references: Establece la relación con la tabla users, utilizando el campo id.onUpdate: 'CASCADE': Si se actualiza el id en la tabla users, se refleja en esta tabla.onDelete: 'CASCADE': Si un usuario es eliminado, se eliminan automáticamente los registros relacionados en esta tabla.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
perfil_usuarios con los campos y restricciones mencionados.down
perfil_usuarios de la base de datos.