|
@@ -6,7 +6,50 @@ 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
|