import structlog from sqlalchemy import select logger = structlog.get_logger() async def snapshot_job() -> None: from app.dependencies import get_session_factory from app.db.models.user import User from app.services.report_service import take_net_worth_snapshot session_factory = get_session_factory() async with session_factory() as db: try: result = await db.execute(select(User).where(User.deleted_at.is_(None))) users = result.scalars().all() for user in users: await take_net_worth_snapshot(db, user.id, user.base_currency) await db.commit() logger.info("snapshot_job_done", users=len(users)) except Exception as exc: await db.rollback() logger.error("snapshot_job_failed", error=str(exc))