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
24 lines
826 B
Python
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))
|