Esta migración crea la tabla notificaciones, diseñada para almacenar las notificaciones enviadas a los usuarios. Cada notificación contiene un mensaje, la fecha de envío, un estado (leída o no leída), y está asociada a un usuario específico mediante una clave foránea.
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('notificaciones', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true,
allowNull: false,
},
mensaje: {
type: Sequelize.TEXT,
allowNull: false,
},
fechaEnvio: {
type: Sequelize.DATE,
allowNull: false,
},
estado: {
type: Sequelize.ENUM('leída', 'no leída'),
allowNull: false,
},
usuarioId: {
type: Sequelize.INTEGER,
references: {
model: 'users', // Asegúrate de que el nombre de la tabla referenciada sea correcto
key: 'id',
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE',
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
},
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('notificaciones');
}
};
id
INTEGERautoIncrement: true: Incremento automático para cada nuevo registro.primaryKey: true: Clave primaria de la tabla.allowNull: false: No puede ser nulo.mensaje
TEXTallowNull: false: No puede ser nulo. Contiene el mensaje de la notificación.fechaEnvio
DATEallowNull: false: No puede ser nulo. Indica la fecha de envío de la notificación.estado
ENUM('leída', 'no leída')allowNull: false: No puede ser nulo. Indica si la notificación ha sido leída o no.usuarioId
INTEGERusers, conectada mediante el campo id.onUpdate: 'CASCADE': Actualiza automáticamente si el id en users cambia.onDelete: 'CASCADE': Elimina las notificaciones asociadas si el usuario es eliminado.createdAt
DATEallowNull: false: No puede ser nulo. Indica la fecha de creación del registro.updatedAt
DATEallowNull: false: No puede ser nulo. Indica la fecha de la última actualización del registro.up
notificaciones con los campos y relaciones especificados.down
notificaciones de la base de datos.