1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from datetime import datetime
- from sqlalchemy import Column, Integer, String, Boolean, Float, DateTime, ForeignKey
- from sqlalchemy.orm import relationship
- from sqlalchemy.ext.declarative import declarative_base
- Base = declarative_base()
- class Game(Base):
- __tablename__ = 'game'
- game_id = Column(String, primary_key=True)
- linked_game = Column(String)
- timer = Column(Integer)
- rounds = Column(Integer)
- only_america = Column(Boolean)
- generation_method = Column(String)
- rule_set = Column(String)
- coordinates = relationship("Coordinate", lazy=True, order_by="Coordinate.round_number")
- players = relationship("Player", lazy=True, backref="game")
- class Player(Base):
- __tablename__ = "player"
- player_id = Column(Integer, primary_key=True, autoincrement=True)
- game_id = Column(String, ForeignKey("game.game_id"))
- player_name = Column(String)
- guesses = relationship("Guess", lazy=True, order_by="Guess.round_number")
- class Coordinate(Base):
- __tablename__ = "coordinate"
- game_id = Column(String, ForeignKey("game.game_id"), primary_key=True)
- round_number = Column(Integer, primary_key=True, autoincrement=False)
- latitude = Column(Float)
- longitude = Column(Float)
- class Guess(Base):
- __tablename__ = "guess"
- player_id = Column(Integer, ForeignKey("player.player_id"), primary_key=True, autoincrement=False)
- round_number = Column(Integer, primary_key=True, autoincrement=False)
- latitude = Column(Float)
- longitude = Column(Float)
- round_score = Column(Integer)
- time_remaining = Column(Float)
- created_at = Column(DateTime, default=datetime.utcnow)
|