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:
@@ -376,10 +376,18 @@ class SqlCalendarService:
|
|||||||
async def adopt_entries_for_user(
|
async def adopt_entries_for_user(
|
||||||
self, session: AsyncSession, user_id: int, session_id: str,
|
self, session: AsyncSession, user_id: int, session_id: str,
|
||||||
) -> None:
|
) -> 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(
|
await session.execute(
|
||||||
update(CalendarEntry)
|
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())
|
.values(deleted_at=func.now())
|
||||||
)
|
)
|
||||||
cal_result = await session.execute(
|
cal_result = await session.execute(
|
||||||
|
|||||||
Reference in New Issue
Block a user