Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Extract events/calendar functionality into standalone microservice: - app.py and events_api.py from apps/events/ - Calendar blueprints (calendars, calendar, calendar_entries, calendar_entry, day, slots, slot, ticket_types, ticket_type) - Templates for all calendar/event views including admin - Dockerfile (APP_MODULE=app:app, IMAGE=events) - entrypoint.sh (no Alembic - migrations managed by blog app) - Gitea CI workflow for build and deploy Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
25 lines
899 B
Python
25 lines
899 B
Python
from sqlalchemy import select, update
|
|
from models.calendars import CalendarEntry
|
|
from sqlalchemy import func
|
|
|
|
async def adopt_session_entries_for_user(session, user_id: int, session_id: str | None) -> None:
|
|
if not session_id:
|
|
return
|
|
# (Optional) Mark any existing entries for this user as deleted to avoid duplicates
|
|
await session.execute(
|
|
update(CalendarEntry)
|
|
.where(CalendarEntry.deleted_at.is_(None), CalendarEntry.user_id == user_id)
|
|
.values(deleted_at=func.now())
|
|
)
|
|
# Reassign anonymous entries to the user
|
|
result = await session.execute(
|
|
select(CalendarEntry).where(
|
|
CalendarEntry.deleted_at.is_(None),
|
|
CalendarEntry.session_id == session_id
|
|
)
|
|
)
|
|
anon_entries = result.scalars().all()
|
|
for entry in anon_entries:
|
|
entry.user_id = user_id
|
|
# No commit here; caller will commit
|