added db module

This commit is contained in:
Andrei Stoica 2024-01-31 19:37:14 -05:00
parent 30497075be
commit e26a3ac63a
1 changed files with 113 additions and 0 deletions

113
src/db.py Normal file
View File

@ -0,0 +1,113 @@
import psycopg2 as pg
from os import environ as env
from extract import vals_in_order
def connect():
return pg.connect(
dbname=env.get("POSTGRES_DB"),
user=env.get("POSTGRES_USER"),
password=env.get("POSTGRES_PASSWORD"),
host=env.get("POSTGRES_HOST"),
port=env.get("POSTGRES_PORT"),
)
def get_all_profile_names(conn=None):
if not conn:
conn = connect()
with conn.cursor() as curs:
curs.execute("""SELECT name, leetify_user_id FROM data.profile_meta;""")
data = curs.fetchall()
return data
def get_profile_game_count(user_id, conn=None):
if not conn:
conn = connect()
with conn.cursor() as curs:
curs.execute(
"""SELECT count(*) FROM data.profile_game
WHERE leetify_user_id = %s;""",
(user_id,),
)
data = curs.fetchone()
if not data:
data = [0]
return data[0]
def get_profile_game_ids(user_id, conn=None):
if not conn:
conn = connect()
with conn.cursor() as curs:
curs.execute(
"""SELECT game_id FROM data.profile_game
WHERE leetify_user_id = %s;""",
(user_id,),
)
data = curs.fetchall()
return [row[0] for row in data]
def insert_games(games, conn=None):
if not conn:
conn = connect()
cols_api = [
"leetifyUserId",
"ctLeetifyRating",
"ctLeetifyRatingRounds",
"dataSource",
"elo",
"gameFinishedAt",
"gameId",
"isCs2",
"mapName",
"matchResult",
"scores",
"skillLevel",
"tLeetifyRating",
"tLeetifyRatingRounds",
"deaths",
"hasBannedPlayer",
"kills",
"partySize",
]
cols_db = [
"leetify_user_id",
"ct_Leetify_rating",
"ct_Leetify_rating_rounds",
"data_source",
"elo",
"game_finished_at",
"game_id",
"is_cs2",
"map_name",
"match_result",
"scores",
"skill_level",
"t_leetify_rating",
"t_leetify_rating_rounds",
"deaths",
"has_banned_player",
"kills",
"party_size",
]
vals = map(lambda game: vals_in_order(game, cols_api), games)
with conn.cursor() as curs:
sql = f"""
INSERT into data.profile_game ({', '.join(cols_db)})
VALUES ({', '.join(['%s'] * len(cols_db))});
"""
curs.executemany(sql, vals)
conn.commit()