Esta migración crea la tabla roles, diseñada para almacenar los roles de los usuarios en el sistema. Incluye campos para el nombre y una descripción opcional del rol, además de las marcas de tiempo estándar para el control de cambios.
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('roles', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true
},
nombre: {
type: Sequelize.STRING,
allowNull: false,
unique: true, // Asegura que los nombres de rol sean únicos
},
descripcion: {
type: Sequelize.TEXT,
allowNull: true, // Permite que la descripción sea opcional
},
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('roles');
}
};
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.unique: true: Asegura que no haya duplicados en los nombres de los roles.descripcion
TEXTallowNull: true: Puede ser nulo, ya que es opcional.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'): Se actualiza automáticamente al modificar el registro.up
roles con los campos y restricciones especificados.down
roles de la base de datos.