From c66fbf1a62f11a45606f92c351c0504889027429 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 18 Dec 2025 15:59:35 +0100 Subject: [PATCH] Enhance syncDatabase function to include cleanup for orphaned child_relation entries with invalid father_character_id, mother_character_id, or child_character_id references, improving data integrity and logging consistency. --- backend/utils/syncDatabase.js | 36 +++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/backend/utils/syncDatabase.js b/backend/utils/syncDatabase.js index 26c7c8f..32ed033 100644 --- a/backend/utils/syncDatabase.js +++ b/backend/utils/syncDatabase.js @@ -136,7 +136,23 @@ const syncDatabase = async () => { console.log(`✅ ${deletedCount6} verwaiste user_house Einträge entfernt`); } - if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0 && deletedCount6 === 0) { + // Cleanup child_relation mit ungültigen father_character_id, mother_character_id oder child_character_id + const result7 = await sequelize.query(` + DELETE FROM falukant_data.child_relation + WHERE father_character_id NOT IN ( + SELECT id FROM falukant_data.character + ) OR mother_character_id NOT IN ( + SELECT id FROM falukant_data.character + ) OR child_character_id NOT IN ( + SELECT id FROM falukant_data.character + ); + `); + const deletedCount7 = result7[1] || 0; + if (deletedCount7 > 0) { + console.log(`✅ ${deletedCount7} verwaiste child_relation Einträge entfernt`); + } + + if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0 && deletedCount6 === 0 && deletedCount7 === 0) { console.log("✅ Keine verwaisten Einträge gefunden"); } } catch (e) { @@ -343,7 +359,23 @@ const syncDatabaseForDeployment = async () => { console.log(`✅ ${deletedCount6} verwaiste user_house Einträge entfernt`); } - if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0 && deletedCount6 === 0) { + // Cleanup child_relation mit ungültigen father_character_id, mother_character_id oder child_character_id + const result7 = await sequelize.query(` + DELETE FROM falukant_data.child_relation + WHERE father_character_id NOT IN ( + SELECT id FROM falukant_data.character + ) OR mother_character_id NOT IN ( + SELECT id FROM falukant_data.character + ) OR child_character_id NOT IN ( + SELECT id FROM falukant_data.character + ); + `); + const deletedCount7 = result7[1] || 0; + if (deletedCount7 > 0) { + console.log(`✅ ${deletedCount7} verwaiste child_relation Einträge entfernt`); + } + + if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0 && deletedCount6 === 0 && deletedCount7 === 0) { console.log("✅ Keine verwaisten Einträge gefunden"); } } catch (e) {