← back to Watches

services/push-notifications.js

16 lines

import webPush from 'web-push';
import pool from '../database/connection.js';

webPush.setVapidDetails('mailto:admin@omega-watches.com', process.env.VAPID_PUBLIC_KEY || '', process.env.VAPID_PRIVATE_KEY || '');

export async function sendPushNotification(userId, payload) {
  const subs = await pool.query(`SELECT * FROM push_subscriptions WHERE user_id = $1 AND is_active = true`, [userId]);
  for (const sub of subs.rows) {
    try {
      await webPush.sendNotification({ endpoint: sub.endpoint, keys: { p256dh: sub.p256dh_key, auth: sub.auth_key } }, JSON.stringify(payload));
    } catch (e) { console.error('Push failed:', e.message); }
  }
}

export default { sendPushNotification };