feat: Implement orphan record deletion logic based on edit mode

- Updated the DataService to conditionally delete orphan records only when in EDIT mode, controlled by the deleteOrphans flag.
- Enhanced the SelectedItemsDetailInputComponent to determine the mode (EDIT or CREATE) based on the presence of existing database IDs, ensuring that orphan records are only deleted when necessary.
- Improved data integrity by preventing unintended deletions during the CREATE process.
This commit is contained in:
DDD1542
2026-02-09 15:50:53 +09:00
parent d7f900d8ae
commit 7118a723f3
4 changed files with 30 additions and 7158 deletions

View File

@@ -1505,14 +1505,17 @@ class DataService {
}
}
// 3. 고아 레코드 삭제: 기존 레코드 중 이번에 처리되지 않은 것 삭제
for (const existingRow of existingRecords.rows) {
const existId = existingRow[pkColumn];
if (!processedIds.has(existId)) {
const deleteQuery = `DELETE FROM "${tableName}" WHERE "${pkColumn}" = $1`;
await pool.query(deleteQuery, [existId]);
deleted++;
console.log(`🗑️ DELETE orphan: ${pkColumn} = ${existId}`);
// 3. 고아 레코드 삭제: deleteOrphans=true일 때만 (EDIT 모드)
// CREATE 모드에서는 기존 레코드를 건드리지 않음
if (deleteOrphans) {
for (const existingRow of existingRecords.rows) {
const existId = existingRow[pkColumn];
if (!processedIds.has(existId)) {
const deleteQuery = `DELETE FROM "${tableName}" WHERE "${pkColumn}" = $1`;
await pool.query(deleteQuery, [existId]);
deleted++;
console.log(`🗑️ DELETE orphan: ${pkColumn} = ${existId}`);
}
}
}