def leaderboard(): with connect_db() as db: return list( list(x) for x in db( "SELECT name, wpm FROM leaderboard ORDER BY wpm DESC LIMIT 20" ).fetchall() )
def db_init(): setup_db("cats") with connect_db() as db: db("""CREATE TABLE IF NOT EXISTS leaderboard ( name varchar(128), user_id varchar(128), wpm double, PRIMARY KEY (`user_id`) );""")
def check_on_leaderboard(user): with connect_db() as db: users = list( x[0] for x in db( "SELECT user_id FROM leaderboard ORDER BY wpm DESC LIMIT 20" ).fetchall() ) return bool(user in users)
def record_wpm(name, user, wpm, token): authorized_limit = get_authorized_limit(user=user, token=token) if wpm > max(MAX_UNVERIFIED_WPM, authorized_limit) or len(name) > MAX_NAME_LENGTH: return with connect_db() as db: db("DELETE FROM leaderboard WHERE user_id = (%s)", [user]) db("INSERT INTO leaderboard (name, user_id, wpm) VALUES (%s, %s, %s)", [name, user, wpm])
def db_init(): global connect_db from gui_files.db import connect_db with connect_db() as db: db("""CREATE TABLE IF NOT EXISTS leaderboard ( name varchar(128), user_id varchar(128), wpm double, PRIMARY KEY (`user_id`) );""")
def check_leaderboard_eligibility(wpm, user, token): with connect_db() as db: vals = db("SELECT wpm FROM leaderboard ORDER BY wpm DESC LIMIT 20").fetchall() threshold = vals[-1][0] if len(vals) >= 20 else 0 prev_best = db("SELECT wpm FROM leaderboard WHERE user_id=(%s)", [user]).fetchone() if prev_best: threshold = max(threshold, prev_best[0]) authorized_limit = get_authorized_limit(user=user, token=token) return { "eligible": wpm >= threshold, "needVerify": wpm > max(authorized_limit, MAX_UNVERIFIED_WPM) }
def update_name(new_name, user): if len(new_name) > MAX_NAME_LENGTH: return with connect_db() as db: db("UPDATE leaderboard SET name=(%s) WHERE user_id=(%s)", [new_name, user])