diff --git a/python/backends/database.py b/python/backends/database.py index a3700bd..86ead10 100644 --- a/python/backends/database.py +++ b/python/backends/database.py @@ -1,5 +1,6 @@ import sqlite3 import json +import datetime as dt import backends.entities.Players as Players import backends.trueskillWrapper as trueskill @@ -10,6 +11,30 @@ import backends.trueskillWrapper as trueskill DATABASE = "players.sqlite" DATABASE_ROUNDS = "rounds.sqlite" +def check(): + conn = sqlite3.connect(DATABASE) + conn.close() + conn = sqlite3.connect(DATABASE_ROUNDS) + cursor = conn.cursor() + backlog = dt.datetime.now() - dt.timedelta(days=7) + query = "SELECT avg(prediction) FROM rounds WHERE timestamp > ? AND confidence > 0.6 \ + ORDER BY timestamp DESC;" + cursor.execute(query, (backlog.timestamp(),)) + avgPred = cursor.fetchone()[0] + query = "SELECT count(*) FROM rounds WHERE timestamp > ? AND confidence > 0.6 \ + ORDER BY timestamp DESC;" + cursor.execute(query, (backlog.timestamp(),)) + count = cursor.fetchone()[0] + conn.close() + + if count < 10: + raise AssertionError("Game count last 7 days low ({})".format(count)) + elif avgPred > 0.5: + raise AssertionError("Average Prediction very bad ({})".format(avgPred)) + else: + return (count, avgPred) + + def saveRound(r): conn = sqlite3.connect(DATABASE_ROUNDS) cursor = conn.cursor() diff --git a/python/httpAPI.py b/python/httpAPI.py index 7f9f6d7..f0f9e5b 100644 --- a/python/httpAPI.py +++ b/python/httpAPI.py @@ -17,6 +17,14 @@ def run(port, parser): app.run(port=port) ## SERVER QUERIES ### +@app.route('/health') +def health(): + try: + count, avgPred = db.check() + return ("Rounds: {}, AvgPrediction (lower than 0.5 is good): {}".format(count, avgPred)) + except AssertionError as e: + return ("{}".format(e), 200) + @app.route('/get-player-rating-msg') def getPlayer(): playerId = flask.request.args.get("id")