feat: initial project setup
This commit is contained in:
44
backend/app/models.py
Normal file
44
backend/app/models.py
Normal file
@@ -0,0 +1,44 @@
|
||||
"""SQLAlchemy ORM models for ELO rating tables."""
|
||||
|
||||
from sqlalchemy import Column, DateTime, Float, Integer, String
|
||||
from sqlalchemy.sql import func
|
||||
|
||||
from app.config import settings
|
||||
from app.database import Base
|
||||
|
||||
|
||||
class EloRating(Base):
|
||||
"""Tracks the current ELO rating for each listing."""
|
||||
|
||||
__tablename__ = "ratings"
|
||||
__table_args__ = {"schema": settings.ELO_SCHEMA}
|
||||
|
||||
global_id = Column(String, primary_key=True)
|
||||
elo_rating = Column(Float, nullable=False, default=settings.DEFAULT_ELO)
|
||||
comparison_count = Column(Integer, nullable=False, default=0)
|
||||
wins = Column(Integer, nullable=False, default=0)
|
||||
losses = Column(Integer, nullable=False, default=0)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(
|
||||
DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
|
||||
)
|
||||
|
||||
|
||||
class Comparison(Base):
|
||||
"""Records each pairwise comparison with ELO snapshots."""
|
||||
|
||||
__tablename__ = "comparisons"
|
||||
__table_args__ = {"schema": settings.ELO_SCHEMA}
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
listing_a_id = Column(String, nullable=False)
|
||||
listing_b_id = Column(String, nullable=False)
|
||||
winner_id = Column(String, nullable=False)
|
||||
elo_a_before = Column(Float, nullable=False)
|
||||
elo_b_before = Column(Float, nullable=False)
|
||||
elo_a_after = Column(Float, nullable=False)
|
||||
elo_b_after = Column(Float, nullable=False)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user