Servicio de Preferencias de Notificaciones
Este módulo gestiona la creación y actualización de las preferencias de notificaciones de un usuario en el sistema.
🔍 Ubicación
src/services/preferencias.service.ts
📦 Dependencias utilizadas
import prisma from '../utils/prismaClient';
prisma→ Cliente de base de datos para interactuar con la tablapreferenciasNotificaciones.
🛠 Funciones principales
actualizarPreferencias(idUsuario: number, data: Partial<Preferencias>)
Actualiza o crea las preferencias de notificaciones para un usuario específico.
Parámetros
-
idUsuario(number) → ID del usuario al que se le aplicarán las preferencias. -
data(Partial<Preferencias>) → Objeto con las preferencias a modificar. Puede incluir:stockBajo(boolean) → Notificación de stock bajo.productoVencido(boolean) → Notificación de productos vencidos.comentarios(boolean) → Notificación de nuevos comentarios.reposicion(boolean) → Notificación de reposición de stock.actualizacion(boolean) → Notificación de actualizaciones generales.
🔄 Lógica de funcionamiento
-
Consulta inicial Se busca si el usuario ya tiene preferencias registradas:
const existentes = await prisma.preferenciasNotificaciones.findUnique({
where: { idUsuario }
}); -
Si existen preferencias previas
- Se actualizan únicamente los campos recibidos en
data.
- Se actualizan únicamente los campos recibidos en
-
Si no existen preferencias previas
- Se crea un nuevo registro en
preferenciasNotificaciones. - Los campos no especificados en
datase inicializan entruepor defecto.
- Se crea un nuevo registro en
📂 Ejemplo de uso
await actualizarPreferencias(5, {
stockBajo: false,
productoVencido: true
});
📌 Este ejemplo actualiza las preferencias del usuario con ID 5, desactivando las alertas por stock bajo pero manteniendo activas las de productos vencidos.
⚙️ Tablas relacionadas
-
preferenciasNotificacionesidUsuario(PK, FK → usuarios.id)stockBajo(boolean)productoVencido(boolean)comentarios(boolean)reposicion(boolean)actualizacion(boolean)