From 346a326bfdb1a066701720f13de1b0b995a59fd8 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 18 Dec 2025 15:49:34 +0100 Subject: [PATCH] Enhance syncDatabase function to include cleanup for orphaned promotional_gift entries, removing invalid sender and recipient character references, and improve logging for orphaned entry detection. --- backend/utils/syncDatabase.js | 58 ++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/backend/utils/syncDatabase.js b/backend/utils/syncDatabase.js index 8d3c535..38772e4 100644 --- a/backend/utils/syncDatabase.js +++ b/backend/utils/syncDatabase.js @@ -96,21 +96,35 @@ const syncDatabase = async () => { console.log(`✅ ${deletedCount3} verwaiste knowledge Einträge entfernt`); } - // Cleanup notification mit ungültigen user_id - const result4 = await sequelize.query(` - DELETE FROM falukant_log.notification - WHERE user_id NOT IN ( - SELECT id FROM falukant_data.falukant_user - ); - `); - const deletedCount4 = result4[1] || 0; - if (deletedCount4 > 0) { - console.log(`✅ ${deletedCount4} verwaiste notification Einträge entfernt`); - } + // Cleanup notification mit ungültigen user_id + const result4 = await sequelize.query(` + DELETE FROM falukant_log.notification + WHERE user_id NOT IN ( + SELECT id FROM falukant_data.falukant_user + ); + `); + const deletedCount4 = result4[1] || 0; + if (deletedCount4 > 0) { + console.log(`✅ ${deletedCount4} verwaiste notification Einträge entfernt`); + } - if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0) { - console.log("✅ Keine verwaisten Einträge gefunden"); - } + // Cleanup promotional_gift mit ungültigen sender_character_id oder recipient_character_id + const result5 = await sequelize.query(` + DELETE FROM falukant_log.promotional_gift + WHERE sender_character_id NOT IN ( + SELECT id FROM falukant_data.character + ) OR recipient_character_id NOT IN ( + SELECT id FROM falukant_data.character + ); + `); + const deletedCount5 = result5[1] || 0; + if (deletedCount5 > 0) { + console.log(`✅ ${deletedCount5} verwaiste promotional_gift Einträge entfernt`); + } + + if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0) { + console.log("✅ Keine verwaisten Einträge gefunden"); + } } catch (e) { console.warn('⚠️ Konnte verwaiste Einträge nicht bereinigen:', e?.message || e); } @@ -287,7 +301,21 @@ const syncDatabaseForDeployment = async () => { console.log(`✅ ${deletedCount4} verwaiste notification Einträge entfernt`); } - if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0) { + // Cleanup promotional_gift mit ungültigen sender_character_id oder recipient_character_id + const result5 = await sequelize.query(` + DELETE FROM falukant_log.promotional_gift + WHERE sender_character_id NOT IN ( + SELECT id FROM falukant_data.character + ) OR recipient_character_id NOT IN ( + SELECT id FROM falukant_data.character + ); + `); + const deletedCount5 = result5[1] || 0; + if (deletedCount5 > 0) { + console.log(`✅ ${deletedCount5} verwaiste promotional_gift Einträge entfernt`); + } + + if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0) { console.log("✅ Keine verwaisten Einträge gefunden"); } } catch (e) {