feat(library): library-wide achievement sync and summary

Achievements were fetched only when a game detail page was opened, and a Steam error was stored as "no achievements" or "hidden". A background run after each library sync now fetches schemas and the unlocks of games with new playtime, one Steam call per second for all runs together, and never overwrites stored data on a Steam error. Adds GET /api/library/achievements/summary, achievement counts on GameDto and the public profile, and migration V7 (playtime_at_refresh).
This commit is contained in:
lobo committed 2026-09-25 10:13:31 +02:00
1 parent 86db6f7167
commit 9fd552a785
25 files changed
+1399 -95

No files matched your search

@@ -0,0 +1,3 @@
-- Playtime the last achievement refresh saw. The background sync asks Steam again only when the playtime changed.
-- NULL: never refreshed with this column, or Steam hid the achievements; the next sync asks again.
ALTER TABLE user_game_achievement_meta ADD COLUMN playtime_at_refresh INTEGER;