示例#1
0
 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()
         )
示例#2
0
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`)
    );""")
示例#3
0
 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)
示例#4
0
    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])
示例#5
0
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`)
    );""")
示例#6
0
    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)
        }
示例#7
0
 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])