12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from flask_sqlalchemy import SQLAlchemy
- db = SQLAlchemy()
- class Game(db.Model):
- game_id = db.Column(db.String, primary_key=True)
- timer = db.Column(db.Integer)
- creator = db.Column(db.String)
- coord_id = db.Column(db.Integer, db.ForeignKey("coord_set.coord_id"))
- coord_set = db.relationship("CoordSet")
- guess_sets = db.relationship("GuessSet", backref="game", lazy=True)
- def __str__(self):
- return f"Game({self.game_id}, {self.timer})"
- class CoordSet(db.Model):
- coord_id = db.Column(db.Integer, primary_key=True)
- coord_1 = db.Column(db.String)
- coord_2 = db.Column(db.String)
- coord_3 = db.Column(db.String)
- coord_4 = db.Column(db.String)
- coord_5 = db.Column(db.String)
- def to_dict(self):
- to_return = {}
- for r, c in zip(("1", "2", "3", "4", "5"), (self.coord_1, self.coord_2, self.coord_3, self.coord_4, self.coord_5)):
- if c is None:
- continue
- lat, lng = c.split(",")
- to_return[r] = {
- "lat": float(lat),
- "lng": float(lng)
- }
- return to_return
- class GuessSet(db.Model):
- game_id = db.Column(db.String, db.ForeignKey("game.game_id"), primary_key=True)
- player_name = db.Column(db.String, primary_key=True)
- coord_id = db.Column(db.Integer, db.ForeignKey("coord_set.coord_id"))
- coord_set = db.relationship("CoordSet")
- score_1 = db.Column(db.Integer)
- score_2 = db.Column(db.Integer)
- score_3 = db.Column(db.Integer)
- score_4 = db.Column(db.Integer)
- score_5 = db.Column(db.Integer)
- def to_dict(self):
- c = self.coords.to_dict()
- for r, s in zip(("1", "2", "3", "4", "5"), (self.score_1, self.score_2, self.score_3, self.score_4, self.score_5)):
- if r not in c:
- continue
- c[r]["score"] = s
- return c
|