Selaa lähdekoodia

Adding models and relationships to db

Kirk Trombley 5 vuotta sitten
vanhempi
commit
f326067a3a
2 muutettua tiedostoa jossa 44 lisäystä ja 1 poistoa
  1. 43 0
      server/db.py
  2. 1 1
      server/lib.py

+ 43 - 0
server/db.py

@@ -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

+ 1 - 1
server/lib.py

@@ -47,4 +47,4 @@ def score(target, guess):
         return perfect_score
 
     # TODO might want to try something logarithmic here eventually
-    return perfect_score * (1 - (dist_km / antipode_dist_km))
+    return int(perfect_score * (1 - (dist_km / antipode_dist_km)))