fix(recent_activity): fix rank & achievement event
运行 tools/fix_user_rank_event.py 修复现存的 event
This commit is contained in:
@@ -172,10 +172,13 @@ async def submit_score(
|
||||
user=score.user,
|
||||
)
|
||||
rank_event.event_payload = {
|
||||
"scorerank": str(score.rank),
|
||||
"scorerank": score.rank.value,
|
||||
"rank": resp.rank_global,
|
||||
"mode": str(resp.beatmap.mode), # pyright: ignore[reportOptionalMemberAccess]
|
||||
"beatmap": {"title": resp.beatmap.version, "url": resp.beatmap.url}, # pyright: ignore[reportOptionalMemberAccess]
|
||||
"mode": resp.beatmap.mode.readable(), # pyright: ignore[reportOptionalMemberAccess]
|
||||
"beatmap": {
|
||||
"title": f"{resp.beatmap.beatmapset.artist} - {resp.beatmap.beatmapset.title} [{resp.beatmap.version}]", # pyright: ignore[reportOptionalMemberAccess]
|
||||
"url": resp.beatmap.url, # pyright: ignore[reportOptionalMemberAccess]
|
||||
},
|
||||
"user": {
|
||||
"username": score.user.username,
|
||||
"url": settings.web_url + "users/" + str(score.user.id),
|
||||
|
||||
@@ -12,7 +12,7 @@ from app.database import (
|
||||
User,
|
||||
UserResp,
|
||||
)
|
||||
from app.database.events import EventResp
|
||||
from app.database.events import Event
|
||||
from app.database.lazer_user import SEARCH_INCLUDED
|
||||
from app.database.pp_best_score import PPBestScore
|
||||
from app.database.score import Score, ScoreResp
|
||||
@@ -100,6 +100,29 @@ async def get_users(
|
||||
return BatchUserResponse(users=users)
|
||||
|
||||
|
||||
@router.get("/users/{user}/recent_activity", tags=["用户"], response_model=list[Event])
|
||||
async def get_user_events(
|
||||
session: Database,
|
||||
user: int,
|
||||
limit: int | None = Query(None),
|
||||
offset: int | None = Query(None), # TODO: 搞清楚并且添加这个奇怪的分页偏移
|
||||
):
|
||||
db_user = await session.get(User, user)
|
||||
if db_user is None or db_user.id == BANCHOBOT_ID:
|
||||
raise HTTPException(404, "User Not found")
|
||||
events = (
|
||||
await session.exec(
|
||||
select(Event)
|
||||
.where(Event.user_id == db_user.id)
|
||||
.order_by(col(Event.created_at).desc())
|
||||
.limit(limit)
|
||||
.offset(offset)
|
||||
)
|
||||
).all()
|
||||
print(events)
|
||||
return events
|
||||
|
||||
|
||||
@router.get(
|
||||
"/users/{user_id}/{ruleset}",
|
||||
response_model=UserResp,
|
||||
@@ -341,19 +364,3 @@ async def get_user_scores(
|
||||
)
|
||||
|
||||
return score_responses
|
||||
|
||||
|
||||
@router.get("/users/{user}/recent_activity", tags=["用户"], response_model=list[EventResp])
|
||||
async def get_user_events(
|
||||
session: Database,
|
||||
user: int,
|
||||
limit: int | None = Query(None),
|
||||
offset: str | None = Query(None), # TODO: 搞清楚并且添加这个奇怪的分页偏移
|
||||
):
|
||||
db_user = await session.get(User, user)
|
||||
if db_user is None or db_user.id == BANCHOBOT_ID:
|
||||
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]
|
||||
|
||||
Reference in New Issue
Block a user