feat(event): 添加百次播放事件记录功能
- 在 beatmap_playcounts 模块中增加了事件记录功能 - 当用户播放次数达到百的倍数时,创建并记录 Event 对象 - 事件类型为 EventType.BEATMAP_PLAYCOUNT
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user