Commit Graph

4 Commits

Author SHA1 Message Date
Bastian Wagner
fd50bbbab7 feat: schedule periodic user synchronization 2026-08-15 16:14:25 +02:00
Bastian Wagner
1d414d6298 feat: isolate concurrent user syncs
Wrap SyncManager.sync_user in a per-user asyncio.Lock (raising
SyncAlreadyRunning on overlap) and add sync_all_enabled() to fan out
across all enabled users with per-user failure isolation via
asyncio.gather(return_exceptions=True). The prior sync_user body is
renamed to _sync_user_locked with no logic changes.
2026-08-15 16:08:00 +02:00
Bastian Wagner
4aaf490bc5 style: use SQLAlchemy 2.0 select() in sync test helpers
Match the select()/scalars() convention already used throughout
app/db/repositories.py instead of the legacy Query API.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 15:54:52 +02:00
Bastian Wagner
c4e986e3f8 feat: add resumable per-user sync pipeline 2026-08-15 15:53:27 +02:00