From 50375c7b1255b0460bcbb98dfd63f3d6fd6582bf Mon Sep 17 00:00:00 2001 From: chenjintang-shrimp Date: Wed, 13 Aug 2025 06:48:54 +0000 Subject: [PATCH] =?UTF-8?q?feat(event):=20=E6=B7=BB=E5=8A=A0=E7=99=BE?= =?UTF-8?q?=E6=AC=A1=E6=92=AD=E6=94=BE=E4=BA=8B=E4=BB=B6=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 beatmap_playcounts 模块中增加了事件记录功能 - 当用户播放次数达到百的倍数时,创建并记录 Event 对象 - 事件类型为 EventType.BEATMAP_PLAYCOUNT --- app/database/beatmap_playcounts.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/database/beatmap_playcounts.py b/app/database/beatmap_playcounts.py index e8f4741..a6eed31 100644 --- a/app/database/beatmap_playcounts.py +++ b/app/database/beatmap_playcounts.py @@ -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