From 9db739e56d9c908e2722bcab0614add7018b61dc Mon Sep 17 00:00:00 2001 From: giles Date: Sat, 21 Feb 2026 21:19:42 +0000 Subject: [PATCH] Fix adopt_entries_for_user deleting confirmed bookings on login The adoption logic soft-deleted ALL user entries before adopting anonymous session entries. This nuked confirmed/ordered bookings every time the user logged in. Add state="pending" filter so only stale pending entries are cleared. Co-Authored-By: Claude Opus 4.6 --- services/calendar_impl.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/services/calendar_impl.py b/services/calendar_impl.py index 6afae80..64dd418 100644 --- a/services/calendar_impl.py +++ b/services/calendar_impl.py @@ -376,10 +376,18 @@ class SqlCalendarService: async def adopt_entries_for_user( self, session: AsyncSession, user_id: int, session_id: str, ) -> None: - """Adopt anonymous calendar entries for a logged-in user.""" + """Adopt anonymous calendar entries for a logged-in user. + + Only deletes stale *pending* entries for the user — confirmed/ordered + entries must be preserved. + """ await session.execute( update(CalendarEntry) - .where(CalendarEntry.deleted_at.is_(None), CalendarEntry.user_id == user_id) + .where( + CalendarEntry.deleted_at.is_(None), + CalendarEntry.user_id == user_id, + CalendarEntry.state == "pending", + ) .values(deleted_at=func.now()) ) cal_result = await session.execute(