diff --git a/flask_app/app.py b/flask_app/app.py index 2806c3a..47c37a0 100644 --- a/flask_app/app.py +++ b/flask_app/app.py @@ -289,10 +289,19 @@ def get_db(): """ CREATE TABLE IF NOT EXISTS spielstand ( spieler TEXT PRIMARY KEY, - raum_id TEXT + raum_id TEXT, + start_zeit REAL, + fertig_zeit REAL ) """ ) + + spalten = {row[1] for row in db.execute("PRAGMA table_info(spielstand)")} + if "start_zeit" not in spalten: + db.execute("ALTER TABLE spielstand ADD COLUMN start_zeit REAL") + if "fertig_zeit" not in spalten: + db.execute("ALTER TABLE spielstand ADD COLUMN fertig_zeit REAL") + db.commit() return db @@ -310,9 +319,10 @@ def seite_html(inhalt, klasse="puzzle"): def highscore_html(db): eintraege = db.execute( """ - SELECT name, fertig_zeit - start_zeit AS dauer - FROM spieler + SELECT spieler, fertig_zeit - start_zeit AS dauer + FROM spielstand WHERE fertig_zeit IS NOT NULL + AND start_zeit IS NOT NULL ORDER BY dauer LIMIT 10 """ @@ -369,8 +379,12 @@ def start(): ) spieler_id = cursor.lastrowid db.execute( - "INSERT OR IGNORE INTO spielstand (spieler, raum_id) VALUES (?, ?)", - (name, "stadiontor"), + "INSERT OR IGNORE INTO spielstand (spieler, raum_id, start_zeit, fertig_zeit) VALUES (?, ?, ?, NULL)", + (name, "stadiontor", time.time()), + ) + db.execute( + "UPDATE spielstand SET raum_id=?, start_zeit=? WHERE spieler=?", + ("stadiontor", time.time(), name), ) db.commit() db.close() @@ -451,12 +465,18 @@ def raum(raum_id): if antwort == richtige_antwort: db = get_db() spieler_id = session.get("spieler_id") + spieler_name = session.get("spieler") or session.get("spieler_name") if spieler_id: db.execute( "UPDATE spieler SET fertig_zeit=? WHERE id=? AND fertig_zeit IS NULL", (time.time(), spieler_id), ) - db.commit() + if spieler_name: + db.execute( + "UPDATE spielstand SET fertig_zeit=? WHERE spieler=? AND (fertig_zeit IS NULL OR fertig_zeit = 0)", + (time.time(), spieler_name), + ) + db.commit() html = ( "

Geschafft!

" "

Die Nordkurve feiert mit dir, " diff --git a/flask_app/init_db.py b/flask_app/init_db.py index c6f93e7..ba84f3b 100644 --- a/flask_app/init_db.py +++ b/flask_app/init_db.py @@ -36,7 +36,9 @@ db.executescript( CREATE TABLE IF NOT EXISTS spielstand ( spieler TEXT PRIMARY KEY, - raum_id TEXT + raum_id TEXT, + start_zeit REAL, + fertig_zeit REAL ); INSERT INTO raeume (id, name, beschreibung, raetsel_frage, raetsel_antwort) VALUES