feat(user): add ISO 3166-1 code

This commit is contained in:
MingxuanGame
2025-08-18 12:14:46 +00:00
parent 4aff8cab2d
commit 505d790640
2 changed files with 8 additions and 0 deletions

View File

@@ -1,9 +1,11 @@
from datetime import UTC, datetime, timedelta from datetime import UTC, datetime, timedelta
import json
from typing import TYPE_CHECKING, NotRequired, TypedDict from typing import TYPE_CHECKING, NotRequired, TypedDict
from app.models.model import UTCBaseModel from app.models.model import UTCBaseModel
from app.models.score import GameMode from app.models.score import GameMode
from app.models.user import Country, Page from app.models.user import Country, Page
from app.path import STATIC_DIR
from .achievement import UserAchievement, UserAchievementResp from .achievement import UserAchievement, UserAchievementResp
from .beatmap_playcounts import BeatmapPlaycounts from .beatmap_playcounts import BeatmapPlaycounts
@@ -62,6 +64,8 @@ Badge = TypedDict(
}, },
) )
COUNTRIES = json.loads((STATIC_DIR / "iso3166.json").read_text())
class UserBase(UTCBaseModel, SQLModel): class UserBase(UTCBaseModel, SQLModel):
avatar_url: str = "" avatar_url: str = ""
@@ -267,6 +271,9 @@ class UserResp(UserBase):
u = cls.model_validate(obj.model_dump()) u = cls.model_validate(obj.model_dump())
u.id = obj.id u.id = obj.id
u.country = Country(
code=obj.country_code, name=COUNTRIES.get(obj.country_code, "Unknown")
)
u.follower_count = ( u.follower_count = (
await session.exec( await session.exec(
select(func.count()) select(func.count())

View File

@@ -3,3 +3,4 @@
- `mods.json`: 包含了游戏中的所有可用mod的详细信息。 - `mods.json`: 包含了游戏中的所有可用mod的详细信息。
- Origin: https://github.com/ppy/osu-web/blob/master/database/mods.json - Origin: https://github.com/ppy/osu-web/blob/master/database/mods.json
- Version: 2025/7/30 `ff49b66b27a2850aea4b6b3ba563cfe936cb6082` - Version: 2025/7/30 `ff49b66b27a2850aea4b6b3ba563cfe936cb6082`
- `iso3166.json`: 包含了所有国家和地区的ISO 3166-1代码。