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 <noreply@anthropic.com>
This commit is contained in:
giles
2026-02-21 21:19:42 +00:00
parent dd7a99e8b7
commit 9db739e56d

View File

@@ -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(