File size: 4,153 Bytes
560823b f9247be d3662ef 560823b 1f6b17c f9247be 560823b 6a890b1 560823b ea0c0c1 560823b 1f6b17c 5c97774 1f6b17c d0acf6f 1f6b17c 5c97774 a3c0746 d6188d7 f9247be a7739f9 f9247be d3662ef f9247be 7804478 f9247be 7804478 f9247be 86b69b9 0b5b559 9db9dc4 9d8e6a4 9db9dc4 9d8e6a4 9db9dc4 9d8e6a4 4bfd7b8 9d8e6a4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
import os
from secrets import token_urlsafe
import streamlit as st
import sqlite3
DATA_DIR = "/data"
DB_PATH = os.path.join(DATA_DIR, "data.db")
def get_db_connection():
return sqlite3.connect(DB_PATH)
def initialize_data_storage():
with get_db_connection() as con:
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS user_rosters( user_id INTEGER, position_id TEXT, player_id TEXT)")
cur.execute("CREATE TABLE IF NOT EXISTS users( user_id INTEGER PRIMARY KEY ASC, email TEXT, name TEXT)")
cur.execute("CREATE TABLE IF NOT EXISTS tokens( user_id INTEGER PRIMARY KEY, token TEXT)")
def update_selection(user_id: str, position_id: str, player_id: str):
with get_db_connection() as con:
cur = con.cursor()
cur.execute(
f"""DELETE FROM user_rosters where user_id = {user_id} and position_id = '{position_id}'
"""
)
cur.execute(
f"""INSERT INTO user_rosters (user_id, position_id, player_id )
VALUES({user_id}, '{position_id}', '{player_id}')
"""
)
def get_user_team(user_id):
with get_db_connection() as con:
cur = con.cursor()
team = cur.execute(f"select * from user_rosters where user_id = {user_id}").fetchall()
if team:
return {x[1]: x[2] for x in team}
else:
return {}
def add_new_user(email: str, name: str):
with get_db_connection() as con:
cur = con.cursor()
cur.execute(
f"""INSERT INTO users (email, name )
VALUES('{email.lower()}', '{name}')
"""
)
def get_user(user_id: int):
with get_db_connection() as con:
cur = con.cursor()
user_data = cur.execute(f"select * from users where user_id = {user_id}").fetchone()
if not user_data:
return {}
return {
"user_id": user_data[0],
"email": user_data[1],
"name": user_data[2],
}
def get_user_id_if_email_exists(email: str) -> int | None:
with get_db_connection() as con:
cur = con.cursor()
query_result = cur.execute(f"select user_id from users where email = '{email.lower()}'").fetchone()
if query_result:
user_id = query_result[0]
else:
user_id = None
return user_id
def is_admin(user_id: int):
# Replace with db data field later
return user_id == 1
def login_by_token(token: str):
# returns true if logged in successfully
with get_db_connection() as con:
cur = con.cursor()
query_result = cur.execute(f"select user_id from tokens where token = '{token}'").fetchone()
if query_result:
user_id = query_result[0]
st.session_state["logged_in_user"] = user_id
else:
user_id = None
return user_id
def create_new_token_for_user(user_id: int, existing_user: bool = False):
# returns true if logged in successfully
token = token_urlsafe(32)
with get_db_connection() as con:
cur = con.cursor()
if existing_user:
cur.execute(
f"""DELETE FROM tokens where user_id = {user_id}
"""
)
cur.execute(
f"""INSERT INTO tokens (user_id, token )
VALUES({user_id}, '{token}')
"""
)
return token
def drop_tables():
with get_db_connection() as con:
cur = con.cursor()
cur.execute("DROP TABLE user_rosters")
cur.execute("DROP TABLE users")
cur.execute("DROP TABLE tokens")
def get_all_users(columns_included: list[str] = ["user_id", "name", "email"]):
columns_as_str = ",".join(columns_included)
with get_db_connection() as con:
cur = con.cursor()
all_users = cur.execute(f"select {columns_as_str} from users").fetchall()
return all_users
def get_all_rosters() -> list[tuple[int, str, str]]:
with get_db_connection() as con:
cur = con.cursor()
all_rosters = cur.execute("select * from user_rosters").fetchall()
return all_rosters
|