fix(beatmapset): invalidate beatmapset and beatmap lookup caches after updates

This commit is contained in:
MingxuanGame
2025-10-07 18:09:09 +00:00
parent b4e164faad
commit 1d1221a740

View File

@@ -10,12 +10,14 @@ from app.database.beatmap import Beatmap, BeatmapResp
from app.database.beatmap_sync import BeatmapSync, SavedBeatmapMeta
from app.database.beatmapset import Beatmapset, BeatmapsetResp
from app.database.score import Score
from app.dependencies.database import with_db
from app.dependencies.database import get_redis, with_db
from app.dependencies.storage import get_storage_service
from app.log import logger
from app.models.beatmap import BeatmapRankStatus
from app.utils import bg_tasks, utcnow
from .beatmapset_cache_service import get_beatmapset_cache_service
from httpx import HTTPError, HTTPStatusError
from sqlmodel import col, select
from sqlmodel.ext.asyncio.session import AsyncSession
@@ -341,6 +343,7 @@ class BeatmapsetUpdateService:
new_beatmapset = await Beatmapset.from_resp_no_save(beatmapset)
if db_beatmapset:
await session.merge(new_beatmapset)
await get_beatmapset_cache_service(get_redis()).invalidate_beatmapset_cache(beatmapset.id)
await session.commit()
async def _process_changed_beatmaps(self, changed: list[ChangedBeatmap], beatmaps_list: list[BeatmapResp]):
@@ -397,6 +400,7 @@ class BeatmapsetUpdateService:
await session.commit()
if change.type != BeatmapChangeType.STATUS_CHANGED:
await _process_update_or_delete_beatmaps(change.beatmap_id)
await get_beatmapset_cache_service(get_redis()).invalidate_beatmap_lookup_cache(change.beatmap_id)
service: BeatmapsetUpdateService | None = None