diff --git a/src/inventory_wars/models.py b/src/inventory_wars/models.py index d385b55..829fbf3 100644 --- a/src/inventory_wars/models.py +++ b/src/inventory_wars/models.py @@ -2,9 +2,9 @@ from __future__ import annotations 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.sql import func __all__ = ( "Base", @@ -23,6 +23,7 @@ class User(Base): id: Mapped[int] = mapped_column(primary_key=True) username: Mapped[str] + score: Mapped[int] = mapped_column(default=0, server_default="0") 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) 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") @@ -42,9 +44,11 @@ class ItemShare(Base): timestamp: Mapped[datetime] = mapped_column(DateTime(timezone=False), primary_key=True) 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] raw: Mapped[bytes] = mapped_column(BLOB()) user: Mapped[User] = relationship(back_populates="shares") - event: Mapped[Event] = relationship(back_populates="shares") + event: Mapped[Event | None] = relationship(back_populates="shares")