feat(score_token): add room_id to score token table

This commit is contained in:
MingxuanGame
2025-12-20 19:42:14 +08:00
parent a24302c2df
commit f628061971
4 changed files with 54 additions and 29 deletions

View File

@@ -975,8 +975,6 @@ async def process_score(
score_token: ScoreToken,
info: SoloScoreSubmissionInfo,
session: AsyncSession,
item_id: int | None = None,
room_id: int | None = None,
) -> Score:
gamemode = GameMode.from_int(info.ruleset_id).to_special_mode(info.mods)
logger.info(
@@ -1014,8 +1012,8 @@ async def process_score(
nsmall_tick_hit=info.statistics.get(HitResult.SMALL_TICK_HIT, 0),
nlarge_tick_hit=info.statistics.get(HitResult.LARGE_TICK_HIT, 0),
nslider_tail_hit=info.statistics.get(HitResult.SLIDER_TAIL_HIT, 0),
playlist_item_id=item_id,
room_id=room_id,
playlist_item_id=score_token.playlist_item_id,
room_id=score_token.room_id,
maximum_statistics=info.maximum_statistics,
processed=True,
ranked=ranked,

View File

@@ -13,17 +13,6 @@ from sqlmodel import BigInteger, Field, ForeignKey, Relationship, SQLModel
class ScoreTokenBase(SQLModel, UTCBaseModel):
score_id: int | None = Field(sa_column=Column(BigInteger), default=None)
ruleset_id: GameMode
playlist_item_id: int | None = Field(default=None) # playlist
created_at: datetime = Field(default_factory=utcnow, sa_column=Column(DateTime))
updated_at: datetime = Field(default_factory=utcnow, sa_column=Column(DateTime))
class ScoreToken(ScoreTokenBase, table=True):
__tablename__: str = "score_tokens"
__table_args__ = (Index("idx_user_playlist", "user_id", "playlist_item_id"),)
id: int | None = Field(
default=None,
sa_column=Column(
@@ -33,18 +22,28 @@ class ScoreToken(ScoreTokenBase, table=True):
autoincrement=True,
),
)
score_id: int | None = Field(sa_column=Column(BigInteger), default=None)
ruleset_id: GameMode
user_id: int = Field(sa_column=Column(BigInteger, ForeignKey("lazer_users.id")))
beatmap_id: int = Field(foreign_key="beatmaps.id")
user: Mapped[User] = Relationship()
room_id: int | None = Field(default=None)
playlist_item_id: int | None = Field(default=None) # playlist
created_at: datetime = Field(default_factory=utcnow, sa_column=Column(DateTime))
updated_at: datetime = Field(default_factory=utcnow, sa_column=Column(DateTime))
class ScoreToken(ScoreTokenBase, table=True):
__tablename__: str = "score_tokens"
__table_args__ = (
Index("idx_user_playlist", "user_id", "playlist_item_id"),
Index("idx_playlist_room", "playlist_item_id", "room_id"),
)
user: Mapped[User] = Relationship()
beatmap: Mapped[Beatmap] = Relationship()
class ScoreTokenResp(ScoreTokenBase):
id: int
user_id: int
beatmap_id: int
@classmethod
def from_db(cls, obj: ScoreToken) -> "ScoreTokenResp":
return cls.model_validate(obj)