← 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 };