Files
g0v0-server/app/database/beatmap_sync.py
MingxuanGame 3f6776847e feat(beatmap,score): update beatmaps from Bancho & deleting scores (#50)
New API:

- DELETE /api/private/score/{score_id}: delete a score
- POST /api/private/beatmapsets/{beatmapset_id}/sync: request for syncing a beatmapset

New configuration:

- OLD_SCORE_PROCESSING_MODE
2025-10-02 13:36:09 +08:00

24 lines
826 B
Python

from datetime import datetime
from typing import TypedDict
from app.models.beatmap import BeatmapRankStatus
from app.utils import utcnow
from sqlmodel import JSON, Column, DateTime, Field, SQLModel
class SavedBeatmapMeta(TypedDict):
beatmap_id: int
md5: str
is_deleted: bool
beatmap_status: BeatmapRankStatus
class BeatmapSync(SQLModel, table=True):
beatmapset_id: int = Field(primary_key=True, foreign_key="beatmapsets.id")
beatmaps: list[SavedBeatmapMeta] = Field(sa_column=Column(JSON))
beatmap_status: BeatmapRankStatus = Field(index=True)
consecutive_no_change: int = Field(default=0)
next_sync_time: datetime = Field(default_factory=utcnow, sa_column=Column(DateTime, index=True))
updated_at: datetime = Field(default_factory=utcnow, sa_column=Column(DateTime, index=True))