// models/pushSubscriptionModel.js const { getDb } = require('../dbPool'); const pushSubscriptionModel = { async subscribe(userId, subscription) { const db = await getDb(); const { endpoint, keys } = subscription; await db.query( `INSERT INTO push_subscriptions (user_id, endpoint, p256dh, auth) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE user_id = VALUES(user_id), p256dh = VALUES(p256dh), auth = VALUES(auth)`, [userId, endpoint, keys.p256dh, keys.auth] ); }, async unsubscribe(endpoint) { const db = await getDb(); await db.query('DELETE FROM push_subscriptions WHERE endpoint = ?', [endpoint]); }, async getByUserId(userId) { const db = await getDb(); const [rows] = await db.query( 'SELECT * FROM push_subscriptions WHERE user_id = ?', [userId] ); return rows; }, async getByUserIds(userIds) { if (!userIds || userIds.length === 0) return []; const db = await getDb(); const [rows] = await db.query( 'SELECT * FROM push_subscriptions WHERE user_id IN (?)', [userIds] ); return rows; }, async getAll() { const db = await getDb(); const [rows] = await db.query('SELECT * FROM push_subscriptions'); return rows; }, async deleteByEndpoint(endpoint) { const db = await getDb(); await db.query('DELETE FROM push_subscriptions WHERE endpoint = ?', [endpoint]); } }; module.exports = pushSubscriptionModel;