From b6c4d62eccc2206c773710761e5d799e56158f3e Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 18 Dec 2025 15:57:39 +0100 Subject: [PATCH] Refactor user_house model to remove default values for houseTypeId and userId fields, and enhance syncDatabase function to include cleanup for orphaned user_house entries with invalid house_type_id or user_id references, improving data integrity and logging. --- backend/models/falukant/data/user_house.js | 6 ++-- backend/utils/syncDatabase.js | 32 ++++++++++++++++++++-- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/backend/models/falukant/data/user_house.js b/backend/models/falukant/data/user_house.js index f9b9ff5..ad51590 100644 --- a/backend/models/falukant/data/user_house.js +++ b/backend/models/falukant/data/user_house.js @@ -26,13 +26,11 @@ UserHouse.init({ }, houseTypeId: { type: DataTypes.INTEGER, - allowNull: false, - defaultValue: 1 + allowNull: false }, userId: { type: DataTypes.INTEGER, - allowNull: false, - defaultValue: 1 + allowNull: false } }, { sequelize, diff --git a/backend/utils/syncDatabase.js b/backend/utils/syncDatabase.js index 38772e4..26c7c8f 100644 --- a/backend/utils/syncDatabase.js +++ b/backend/utils/syncDatabase.js @@ -122,7 +122,21 @@ const syncDatabase = async () => { console.log(`✅ ${deletedCount5} verwaiste promotional_gift Einträge entfernt`); } - if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0) { + // Cleanup user_house mit ungültigen house_type_id oder user_id + const result6 = await sequelize.query(` + DELETE FROM falukant_data.user_house + WHERE house_type_id NOT IN ( + SELECT id FROM falukant_type.house + ) OR user_id NOT IN ( + SELECT id FROM falukant_data.falukant_user + ); + `); + const deletedCount6 = result6[1] || 0; + if (deletedCount6 > 0) { + console.log(`✅ ${deletedCount6} verwaiste user_house Einträge entfernt`); + } + + if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0 && deletedCount6 === 0) { console.log("✅ Keine verwaisten Einträge gefunden"); } } catch (e) { @@ -315,7 +329,21 @@ const syncDatabaseForDeployment = async () => { console.log(`✅ ${deletedCount5} verwaiste promotional_gift Einträge entfernt`); } - if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0) { + // Cleanup user_house mit ungültigen house_type_id oder user_id + const result6 = await sequelize.query(` + DELETE FROM falukant_data.user_house + WHERE house_type_id NOT IN ( + SELECT id FROM falukant_type.house + ) OR user_id NOT IN ( + SELECT id FROM falukant_data.falukant_user + ); + `); + const deletedCount6 = result6[1] || 0; + if (deletedCount6 > 0) { + console.log(`✅ ${deletedCount6} verwaiste user_house Einträge entfernt`); + } + + if (deletedCount1 === 0 && deletedCount2 === 0 && deletedCount3 === 0 && deletedCount4 === 0 && deletedCount5 === 0 && deletedCount6 === 0) { console.log("✅ Keine verwaisten Einträge gefunden"); } } catch (e) {