1
0

feat: add score data to models

This commit is contained in:
2026-06-02 15:39:36 +08:00
parent 3aacb2c32d
commit b3452bc3df
+9 -5
View File
@@ -2,9 +2,9 @@ from __future__ import annotations
from datetime import datetime from datetime import datetime
from sqlalchemy import DateTime, ForeignKey, UniqueConstraint, BLOB from sqlalchemy import DateTime, ForeignKey, BLOB
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
from sqlalchemy.sql import func
__all__ = ( __all__ = (
"Base", "Base",
@@ -23,6 +23,7 @@ class User(Base):
id: Mapped[int] = mapped_column(primary_key=True) id: Mapped[int] = mapped_column(primary_key=True)
username: Mapped[str] username: Mapped[str]
score: Mapped[int] = mapped_column(default=0, server_default="0")
shares: Mapped[set[ItemShare]] = relationship(back_populates="user") shares: Mapped[set[ItemShare]] = relationship(back_populates="user")
@@ -32,7 +33,8 @@ class Event(Base):
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
item_id: Mapped[int] item_id: Mapped[int]
timestamp: Mapped[datetime] = mapped_column(DateTime(timezone=False)) start_at: Mapped[datetime] = mapped_column(DateTime(timezone=False), server_default=func.now())
end_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=False))
shares: Mapped[set[ItemShare]] = relationship(back_populates="event") shares: Mapped[set[ItemShare]] = relationship(back_populates="event")
@@ -42,9 +44,11 @@ class ItemShare(Base):
timestamp: Mapped[datetime] = mapped_column(DateTime(timezone=False), primary_key=True) timestamp: Mapped[datetime] = mapped_column(DateTime(timezone=False), primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("user.id")) user_id: Mapped[int] = mapped_column(ForeignKey("user.id"))
event_id: Mapped[int] = mapped_column(ForeignKey("event.id")) item_id: Mapped[int]
event_id: Mapped[int | None] = mapped_column(ForeignKey("event.id"))
score: Mapped[int] = mapped_column(default=0, server_default="0")
count: Mapped[int] count: Mapped[int]
raw: Mapped[bytes] = mapped_column(BLOB()) raw: Mapped[bytes] = mapped_column(BLOB())
user: Mapped[User] = relationship(back_populates="shares") user: Mapped[User] = relationship(back_populates="shares")
event: Mapped[Event] = relationship(back_populates="shares") event: Mapped[Event | None] = relationship(back_populates="shares")