Esta migración crea la tabla Skills en la base de datos, destinada a almacenar las habilidades de los usuarios. Cada habilidad tiene un nombre, un nivel de dominio categorizado, y una descripción opcional. Además, está asociada a un usuario específico mediante una clave foránea usuarioId.
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('Skills', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true
},
nombre: {
type: Sequelize.STRING,
allowNull: false,
},
nivelDominio: {
type: Sequelize.ENUM('basico', 'intermedio', 'avanzado', 'experto'),
allowNull: false,
},
descripcion: {
type: Sequelize.TEXT,
allowNull: true,
},
usuarioId: {
type: Sequelize.INTEGER,
references: {
model: 'users', // Ajusta según el nombre correcto de la tabla de usuarios
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('Skills');
}
};
id
INTEGERallowNull: false: No puede ser nulo.autoIncrement: true: Incremento automático para cada nuevo registro.primaryKey: true: Es la clave primaria de la tabla.nombre
STRINGallowNull: false: No puede ser nulo.nivelDominio
ENUM('basico', 'intermedio', 'avanzado', 'experto')allowNull: false: No puede ser nulo.descripcion
TEXTallowNull: true: Puede ser nulo, ya que es opcional.usuarioId
INTEGERreferences: Relación con la tabla users, utilizando el campo id.onUpdate: 'CASCADE': Si el id en la tabla users cambia, se refleja aquí.onDelete: 'CASCADE': Si un usuario es eliminado, las habilidades asociadas también se eliminan.createdAt
DATEallowNull: false: No puede ser nulo.defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'): Se asigna automáticamente la marca de tiempo al crear el registro.updatedAt
DATEallowNull: false: No puede ser nulo.defaultValue: Sequelize.literal('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'): Se actualiza automáticamente al modificar el registro.up
Skills con los campos y restricciones mencionados.down
Skills de la base de datos.