From 99a43f34ab6e6d885c7585ff10f8e6d6edc55113 Mon Sep 17 00:00:00 2001 From: chenjintang-shrimp Date: Tue, 12 Aug 2025 14:48:23 +0000 Subject: [PATCH] feat(user): add API Endpoint GET /users/{user}/recent_activity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在用户路由中增加 /users/{user}/recent_activity 端点 - 实现获取用户近期活动的功能,返回 EventResp 列表 - 添加分页参数 limit 和 offset,目前仅实现 limit - 优化用户不存在时的错误处理 --- app/router/v2/user.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/router/v2/user.py b/app/router/v2/user.py index 303c258..dece5be 100644 --- a/app/router/v2/user.py +++ b/app/router/v2/user.py @@ -10,6 +10,7 @@ from app.database import ( User, UserResp, ) +from app.database.events import EventResp from app.database.lazer_user import SEARCH_INCLUDED from app.database.pp_best_score import PPBestScore from app.database.score import Score, ScoreResp @@ -258,3 +259,21 @@ async def get_user_scores( ) for score in scores ] + + +@router.get( + "/users/{user}/recent_activity", tags=["用户"], response_model=list[EventResp] +) +async def get_user_events( + user: int, + limit: int | None = Query(None), + offset: str | None = Query(None), # TODO: 搞清楚并且添加这个奇怪的分页偏移 + session: AsyncSession = Depends(get_db), +): + db_user = await session.get(User, user) + if db_user is None: + raise HTTPException(404, "User Not found") + events = await db_user.awaitable_attrs.events + if limit is not None: + events = events[:limit] + return [EventResp(**event.model_dump()).merge_payload() for event in events]