97 lines
No EOL
2.9 KiB
JavaScript
97 lines
No EOL
2.9 KiB
JavaScript
// api_v1/scanner/recordChange.js
|
|
const { log } = require('./logger');
|
|
const wss = require('../../ws-server'); // IMPORTANTE
|
|
|
|
async function recordChange(db, photo_id, user, change_type) {
|
|
const timestamp = new Date().toISOString();
|
|
|
|
// -----------------------------------------------------
|
|
// DEDUPLICA SOLO PER "removed"
|
|
// -----------------------------------------------------
|
|
if (change_type === 'removed') {
|
|
const already = await db('photo_changes')
|
|
.where({ photo_id, user, change_type: 'removed' })
|
|
.first();
|
|
|
|
if (already) {
|
|
log(`📘 [CHANGES] removed già registrato → ${photo_id}, ma invio comunque WS`);
|
|
|
|
// -----------------------------------------------------
|
|
// 🔥 INVIA WS ANCHE SE GIÀ REGISTRATO
|
|
// -----------------------------------------------------
|
|
|
|
console.log("WS → invio evento (USER) [removed già registrato]");
|
|
try {
|
|
wss.broadcastToUser(user, {
|
|
type: "removed",
|
|
id: photo_id
|
|
});
|
|
console.log("WS → OK USER (removed già registrato)");
|
|
} catch (e) {
|
|
console.error("WS → ERRORE USER (removed già registrato):", e);
|
|
}
|
|
|
|
console.log("WS → invio evento (ADMIN) [removed già registrato]");
|
|
try {
|
|
wss.broadcastToAdmins({
|
|
type: "removed",
|
|
id: photo_id,
|
|
user
|
|
});
|
|
console.log("WS → OK ADMIN (removed già registrato)");
|
|
} catch (e) {
|
|
console.error("WS → ERRORE ADMIN (removed già registrato):", e);
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|
|
|
|
// -----------------------------------------------------
|
|
// SALVA NEL DB (added o primo removed)
|
|
// -----------------------------------------------------
|
|
await db("photo_changes").insert({
|
|
photo_id,
|
|
user,
|
|
change_type,
|
|
timestamp
|
|
});
|
|
|
|
log(`📘 [CHANGES] ${change_type} → ${photo_id}`);
|
|
|
|
// -----------------------------------------------------
|
|
// LOG PRIMA DEL BROADCAST
|
|
// -----------------------------------------------------
|
|
console.log("WS → invio evento:", { user, change_type, photo_id });
|
|
|
|
// -----------------------------------------------------
|
|
// 🔥 BROADCAST A USER
|
|
// -----------------------------------------------------
|
|
console.log("WS → invio evento (USER)");
|
|
try {
|
|
wss.broadcastToUser(user, {
|
|
type: change_type,
|
|
id: photo_id
|
|
});
|
|
console.log("WS → OK USER");
|
|
} catch (e) {
|
|
console.error("WS → ERRORE USER:", e);
|
|
}
|
|
|
|
// -----------------------------------------------------
|
|
// 🔥 BROADCAST A ADMIN
|
|
// -----------------------------------------------------
|
|
console.log("WS → invio evento (ADMIN)");
|
|
try {
|
|
wss.broadcastToAdmins({
|
|
type: change_type,
|
|
id: photo_id,
|
|
user
|
|
});
|
|
console.log("WS → OK ADMIN");
|
|
} catch (e) {
|
|
console.error("WS → ERRORE ADMIN:", e);
|
|
}
|
|
}
|
|
|
|
module.exports = recordChange; |