El modelo Notificacion representa una notificación enviada a un usuario en Matchify. Incluye atributos como el mensaje de notificación, fecha de envío, estado, y el ID del usuario receptor.

import { DataTypes } from 'sequelize';
import sequelize from '../config/database.js';
import Usuario from './User.js';

const Notificacion = sequelize.define('Notificacion', {
    mensaje: {
        type: DataTypes.TEXT,
        allowNull: false,
    },
    fechaEnvio: {
        type: DataTypes.DATE,
        allowNull: false,
    },
    estado: {
        type: DataTypes.ENUM('leída', 'no leída'),
        allowNull: false,
    },
    usuarioId: {
        type: DataTypes.INTEGER,
        references: {
            model: Usuario,
            key: 'id',
        },
        onUpdate: 'CASCADE',
        onDelete: 'CASCADE',
    },
}, {
    tableName: 'notificaciones',
    timestamps: true,
});

Notificacion.belongsTo(Usuario, { foreignKey: 'usuarioId', as: 'usuario' });

export default Notificacion;

Explicación de cada propiedad

  1. mensaje: Texto de la notificación. Este campo es obligatorio.
  2. fechaEnvio: Fecha en que se envió la notificación. Este campo es obligatorio.
  3. estado: Estado de la notificación, con opciones leída o no leída. Campo obligatorio.
  4. usuarioId: Referencia al usuario que recibe la notificación, con relación al modelo User.

Configuración del modelo

Asociación con User

Notificacion.belongsTo(Usuario, { foreignKey: 'usuarioId', as: 'usuario' });

Establece que cada Notificacion pertenece a un Usuario, usando usuarioId como clave foránea.

Este modelo permite gestionar las notificaciones para los usuarios de Matchify, almacenando información clave sobre el mensaje y su estado de lectura.