feat: add score data to models
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
Reference in New Issue
Block a user