diff --git a/packages/core/src/entries.ts b/packages/core/src/entries.ts index 28d5110..94dbcef 100644 --- a/packages/core/src/entries.ts +++ b/packages/core/src/entries.ts @@ -579,6 +579,16 @@ async function moveEntry( await moveEngagements(k, userId, src.id, dst.id, actor); await writeEntry(k, src, {}, actor, { extra: { deleted_at: nowIso() } }); } + if (result.id !== src.id) { + // The moved entry merged into another one: source records that mapped to it keep syncing into the + // survivor. Engagements keep their ids when re-parented, so their mappings stay valid. + await k + .updateTable("source_records") + .set({ target_id: result.id }) + .where("target_entity", "=", "entry") + .where("target_id", "=", src.id) + .execute(); + } if (opts.undo) return result; await repointCopiesAndListItems(k, userId, src.workId, target.id, actor);