From 9617729a895b0ecf0f155d869d7186a88432b303 Mon Sep 17 00:00:00 2001
From: Miku AuahDark <lumi.hotaru@gmail.com>
Date: Sat, 23 Nov 2024 19:09:57 +0800
Subject: [PATCH] Stub /ranking/player and /ranking/unit

---
 npps4/game/__init__.py  |  1 +
 npps4/game/models.py    |  2 ++
 npps4/game/ranking.py   | 69 +++++++++++++++++++++++++++++++++++++++++
 npps4/system/ranking.py |  0
 4 files changed, 72 insertions(+)
 create mode 100644 npps4/game/ranking.py
 create mode 100644 npps4/system/ranking.py

diff --git a/npps4/game/__init__.py b/npps4/game/__init__.py
index cbcbc40..43264be 100644
--- a/npps4/game/__init__.py
+++ b/npps4/game/__init__.py
@@ -32,6 +32,7 @@
     from . import payment
     from . import personalnotice
     from . import profile
+    from . import ranking
     from . import reward
     from . import scenario
     from . import secretbox
diff --git a/npps4/game/models.py b/npps4/game/models.py
index 2b173a6..4c3e3c5 100644
--- a/npps4/game/models.py
+++ b/npps4/game/models.py
@@ -1,10 +1,12 @@
 import pydantic
 
+
 class UserData(pydantic.BaseModel):
     user_id: int
     name: str
     level: int
 
+
 class CenterUnitInfo(pydantic.BaseModel):
     unit_id: int
     level: int
diff --git a/npps4/game/ranking.py b/npps4/game/ranking.py
new file mode 100644
index 0000000..b08b1e2
--- /dev/null
+++ b/npps4/game/ranking.py
@@ -0,0 +1,69 @@
+import pydantic
+
+from . import models
+from .. import idol
+from .. import util
+from ..system import common
+from ..system import reward
+from ..system import user
+
+
+class PageableMixin(pydantic.BaseModel):
+    page: int = 0
+
+
+class RankingLiveRequest(PageableMixin):
+    live_difficulty_id: int
+
+
+class RankingPlayerRequest(PageableMixin):
+    id: int = 0
+    term: int
+    daily_index: int
+
+
+class RankingUserData(pydantic.BaseModel):
+    user_id: int
+    name: str
+    level: int
+
+
+class RankingData(pydantic.BaseModel):
+    rank: int
+    score: int
+    user_data: models.UserData
+    center_unit_info: models.CenterUnitInfo
+    setting_award_id: int
+
+
+class RankingResponse(common.TimestampMixin, PageableMixin):
+    rank: int | None
+    items: list[RankingData]
+    total_cnt: int
+    present_cnt: int
+
+
+@idol.register("ranking", "live")
+async def ranking_live(context: idol.SchoolIdolUserParams, request: RankingLiveRequest) -> RankingResponse:
+    current_user = await user.get_current(context)
+    util.stub("ranking", "live", request)
+    return RankingResponse(
+        page=request.page,
+        rank=None,
+        items=[],
+        total_cnt=0,
+        present_cnt=await reward.count_presentbox(context, current_user),
+    )
+
+
+@idol.register("ranking", "player")
+async def ranking_player(context: idol.SchoolIdolUserParams, request: RankingPlayerRequest) -> RankingResponse:
+    current_user = await user.get_current(context)
+    util.stub("ranking", "player", request)
+    return RankingResponse(
+        page=request.page,
+        rank=None,
+        items=[],
+        total_cnt=0,
+        present_cnt=await reward.count_presentbox(context, current_user),
+    )
diff --git a/npps4/system/ranking.py b/npps4/system/ranking.py
new file mode 100644
index 0000000..e69de29