feat(user): only show activities of the last 30 days

This commit is contained in:
MingxuanGame
2025-08-26 16:07:27 +00:00
parent bc12182770
commit d2e3b86bd1

View File

@@ -109,20 +109,26 @@ async def get_users(
return processed_response return processed_response
@router.get("/users/{user}/recent_activity", tags=["用户"], response_model=list[Event]) @router.get(
"/users/{user_id}/recent_activity",
tags=["用户"],
response_model=list[Event],
name="获取用户最近活动",
description="获取用户在最近 30 天内的活动日志。",
)
async def get_user_events( async def get_user_events(
session: Database, session: Database,
user: int, user_id: int = Path(description="用户 ID"),
limit: int | None = Query(None), limit: int | None = Query(None, description="限制返回的活动数量"),
offset: int | None = Query(None), # TODO: 搞清楚并且添加这个奇怪的分页偏移 offset: int | None = Query(None, description="活动日志的偏移量"),
): ):
db_user = await session.get(User, user) db_user = await session.get(User, user_id)
if db_user is None or db_user.id == BANCHOBOT_ID: if db_user is None or db_user.id == BANCHOBOT_ID:
raise HTTPException(404, "User Not found") raise HTTPException(404, "User Not found")
events = ( events = (
await session.exec( await session.exec(
select(Event) select(Event)
.where(Event.user_id == db_user.id) .where(Event.user_id == db_user.id, Event.created_at >= utcnow() - timedelta(days=30))
.order_by(col(Event.created_at).desc()) .order_by(col(Event.created_at).desc())
.limit(limit) .limit(limit)
.offset(offset) .offset(offset)