Skip to content

Commit b45fb99

Browse files
code-rootclaude
andcommitted
fix: use async sessions for firmware database auto-save
- Changed from SessionLocal (sync) to AsyncSessionLocal (async) - Updated auto-save logic in _download_worker to use async/await - Uses sqlalchemy.select() for async query execution - Properly handles async context manager for database operations Also created .env.local with SQLite configuration for local development. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
1 parent 045d764 commit b45fb99

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

backend/core/firmware/downloader.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121

2222
import httpx
2323
from aiofiles import open as aio_open
24+
from sqlalchemy import select
2425

2526
from config import settings
2627
from core.firmware.samsung_fota import fetch_latest_firmware
27-
from db.database import SessionLocal
28+
from db.database import AsyncSessionLocal
2829
from db.models import FirmwareEntry
2930

3031
logger = logging.getLogger(__name__)
@@ -174,12 +175,12 @@ async def _download_worker(job: DownloadJob, url: str) -> None:
174175

175176
# Auto-save to database
176177
try:
177-
db = SessionLocal()
178-
try:
178+
async with AsyncSessionLocal() as db:
179179
# Check if entry already exists by filename
180-
existing = db.query(FirmwareEntry).filter(
181-
FirmwareEntry.filename == dest_filename
182-
).first()
180+
result = await db.execute(
181+
select(FirmwareEntry).filter(FirmwareEntry.filename == dest_filename)
182+
)
183+
existing = result.scalar_one_or_none()
183184

184185
if existing:
185186
# Update existing entry
@@ -199,10 +200,8 @@ async def _download_worker(job: DownloadJob, url: str) -> None:
199200
)
200201
db.add(entry)
201202

202-
db.commit()
203+
await db.commit()
203204
logger.info(f'Firmware entry saved to database: {dest_filename}')
204-
finally:
205-
db.close()
206205
except Exception as e:
207206
logger.error(f'Failed to save firmware entry to database: {e}')
208207

0 commit comments

Comments
 (0)