From c2a4a1b0d04f3deb86e7eb9ccc711d71c398e88c Mon Sep 17 00:00:00 2001 From: Yigit Colakoglu Date: Tue, 30 Dec 2025 16:14:27 -0800 Subject: [PATCH] Fix AsyncSession API: use execute() instead of exec() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SQLAlchemy's AsyncSession uses execute() + scalars(), not SQLModel's exec(). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/services/email_monitor.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/services/email_monitor.py b/src/services/email_monitor.py index b874965..a9cf872 100644 --- a/src/services/email_monitor.py +++ b/src/services/email_monitor.py @@ -294,10 +294,10 @@ class EmailMonitor: """Seed the seen_emails table with existing emails on first run.""" async with get_session() as session: # Check if this mailbox has been seeded - result = await session.exec( + result = await session.execute( select(CacheMeta).where(CacheMeta.key == f"seeded_{mailbox}") ) - if result.first(): + if result.scalars().first(): logger.debug(f"Mailbox {mailbox} already seeded") return @@ -334,12 +334,12 @@ class EmailMonitor: async def _is_email_seen(self, email_uid: str, mailbox: str) -> bool: """Check if email has already been processed.""" async with get_session() as session: - result = await session.exec( + result = await session.execute( select(SeenEmail).where( SeenEmail.email_uid == email_uid, SeenEmail.mailbox == mailbox ) ) - return result.first() is not None + return result.scalars().first() is not None async def _mark_as_seen( self, email: EmailSummary, mailbox: str, notification_sent: bool = False @@ -367,12 +367,12 @@ class EmailMonitor: ): """Update the notification status for a seen email.""" async with get_session() as session: - result = await session.exec( + result = await session.execute( select(SeenEmail).where( SeenEmail.email_uid == email_uid, SeenEmail.mailbox == mailbox ) ) - seen = result.first() + seen = result.scalars().first() if seen: seen.notification_sent = success seen.notification_sent_at = datetime.utcnow() if success else None