feat(event): 添加百次播放事件记录功能

- 在 beatmap_playcounts 模块中增加了事件记录功能
- 当用户播放次数达到百的倍数时,创建并记录 Event 对象
- 事件类型为 EventType.BEATMAP_PLAYCOUNT
This commit is contained in:
chenjintang-shrimp
2025-08-13 06:48:54 +00:00
parent 3de9f55109
commit 50375c7b12

View File

@@ -1,5 +1,8 @@
from datetime import UTC, datetime
from typing import TYPE_CHECKING
from app.database.events import Event, EventType
from pydantic import BaseModel
from sqlalchemy.ext.asyncio import AsyncAttrs
from sqlmodel import (
@@ -70,6 +73,21 @@ async def process_beatmap_playcount(
if existing_playcount:
existing_playcount.playcount += 1
if existing_playcount.playcount % 100 == 0:
playcount_event = Event(
created_at=datetime.now(UTC),
type=EventType.BEATMAP_PLAYCOUNT,
user_id=user_id,
)
await existing_playcount.awaitable_attrs.beatmap
playcount_event.event_payload = {
"count": existing_playcount.playcount,
"beatmap": {
"title": existing_playcount.beatmap.version,
"url": existing_playcount.beatmap.url,
},
}
session.add(playcount_event)
else:
new_playcount = BeatmapPlaycounts(
user_id=user_id, beatmap_id=beatmap_id, playcount=1