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
data
se inicializan entrue
por 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
-
preferenciasNotificaciones
idUsuario
(PK, FK → usuarios.id)stockBajo
(boolean)productoVencido
(boolean)comentarios
(boolean)reposicion
(boolean)actualizacion
(boolean)