def get_team(team_id): with db_helper.db_connect() as db: rows = db.get_rows("teams", "TeamAPIID", team_id) if len(rows) == 1: return row_to_blurb(rows[0]) else: return None
def get_player(player_id): with db_helper.db_connect() as db: rows = db.get_rows("players", "PlayerAPIID", player_id) if len(rows) == 1: return row_to_blurb(rows[0]) else: return None
def get_coach_by_number(coach_id): with db_helper.db_connect() as db: rows = db.get_rows("coaches", "CoachID", coach_id) if len(rows) == 1: return row_to_blurb(rows[0]) else: return None
def get_coach_info(coach_id): with db_helper.db_connect() as db: rows = db.get_rows("coaches", "CoachAPIID", coach_id) if len(rows) == 1: row = rows[0] coach = { "name": row[1], "image_url": row[9], "dob": row[4], "current_team": teams.get_team(row[3]), "win_loss_percentage": row[5], "color": row[10] if 10 in row else None, "current_roster": [ players.get_player(player_id) for player_id in row[8].split(",") ], "past_teams": [team for team in row[7].split(",")], "recognitions": [award for award in row[6].split(";")] } return coach else: return None
def get_division(prenba_id): with db_helper.db_connect() as db: rows = db.get_rows("divisions", "DivisionAPIID", prenba_id) if len(rows) == 1: return row_to_blurb(rows[0]) else: return None
def main() -> None: # Load environment dotenv.load_dotenv(".env") db_filename = pathlib.Path(os.getenv("DB_FILENAME") or DEFAULT_DB_FILENAME) server_manager_filename = pathlib.Path( os.getenv("SERVER_MANAGER_FILENAME") or DEFAULT_SERVER_MANAGER_FILENAME) discord_token = os.getenv("DISCORD_TOKEN") # Validate cmdline args s = schema.Schema({"--help": bool, "--test": bool}) args = s.validate(docopt.docopt(__doc__)) # Set up stderr logging logging.basicConfig(stream=sys.stderr, level=logging.INFO) root_logger = logging.getLogger() handler = root_logger.handlers[0] handler.setFormatter(ColoredLogFormatter()) # Ensure DB setup is complete logging.info("Setting up db connection and tables") conn = db_helper.db_connect(db_filename) db_helper.create_all(conn) # And start the client logging.info("Running client") client = Client(conn, server_manager_filename, is_test=args["--test"]) client.run(discord_token)
def search_teams(query): teams = [] for id in team_index.search_team_index(query): with db_helper.db_connect() as db: rows = db.get_rows("teams", "TeamAPIID", id) if len(rows) == 1: teams.append(row_to_detailblurb(rows[0])) return teams
def search_divisions(query): divisions = [] for id in divisions_index.search_division_index(query): with db_helper.db_connect() as db: rows = db.get_rows("divisions", "DivisionAPIID", id) if len(rows) == 1: divisions.append(row_to_detailblurb(rows[0])) return divisions
def search_players(query): players = [] for id in player_index.search_player_index(query): with db_helper.db_connect() as db: rows = db.get_rows("players", "PlayerAPIID", id) if len(rows) == 1: players.append(row_to_detailblurb(rows[0])) return players
def search_coaches(query): coaches = [] for id in coach_index.search_coach_index(query): with db_helper.db_connect() as db: rows = db.get_rows("coaches", "CoachAPIID", id) if len(rows) == 1: coaches.append(row_to_detailblurb(rows[0])) return coaches
def get_awards_for_player(player_id): with db_helper.db_connect() as db: rows = db.get_rows("awards", "Player", player_id) if len(rows) > 0: awards = [] for k, v in Counter([row[1] for row in rows]).items(): if v == 1: awards.append(k) else: awards.append(k + " x " + str(v)) return awards else: return []
def get_team_info(team_id): def get_titles(row): titles = row.split(";") return { "championships": [i.strip() for i in titles[0].split(",")] if titles[0] else [], "conference_champs": [i.strip() for i in titles[1].split(",")] if titles[1] else [], "division_champs": [i.strip() for i in titles[2].split(",")] if titles[2] else [], } with db_helper.db_connect() as db: rows = db.get_rows("teams", "TeamAPIID", team_id) if len(rows) == 1: row = rows[0] team = { "name": row[3], "logo_url": row[11], "city": row[1], "arena": row[9], "head_coach": coaches.get_coach_by_number(row[7]), "color": row[12], "twitter": row[13] if 13 in row else None, "titles": get_titles(row[10]), "division": row[5], "conference": row[6], "current_roster": [ players.get_player(player_id) for player_id in row[8].split(",") ], } return team else: return None
def get_division_info(prenba_id): with db_helper.db_connect() as db: rows = db.get_rows("divisions", "DivisionAPIID", prenba_id) if len(rows) == 1: row = rows[0] division = { "name": row[0], "conference": row[1], "teams": [teams.get_team(team_id) for team_id in row[3].split(",")], "inauguralSeason": row[2], "divChamp": row[5], "mostDivTitles": row[6], "rivalries": [rivalry for rivalry in row[7].split(",")], "imageURL": row[8] } return division else: return None
def get_player_info(player_id): with db_helper.db_connect() as db: rows = db.get_rows("players", "PlayerAPIID", player_id) if len(rows) == 1: row = rows[0] player = { "player": row[1], "jersey_number": row[4], "image_url": row[13], "team": teams.get_team(row[3]), "position": row[5], "dob": row[8], "height": row[6], "weight": row[7], "prenba": row[9], "color": row[14] if 14 in row else None, "career_stats": get_career_stats(row[12]), "recognitions": get_awards_for_player(player_id) } return player else: return None
def list_coaches_full(): with db_helper.db_connect() as db: players = [] for row in db.list_table("coaches"): players.append(row_to_detailblurb(row)) return players
def list_divisions_full(): with db_helper.db_connect() as db: divisions = [] for row in db.list_table("divisions"): divisions.append(row_to_detailblurb(row)) return divisions
def list_players(): with db_helper.db_connect() as db: players = [] for row in db.list_table("players"): players.append(row_to_blurb(row)) return players
def list_teams_full(): with db_helper.db_connect() as db: teams = [] for row in db.list_table("teams"): teams.append(row_to_detailblurb(row)) return teams
def __init__(self): self.conn = db_connect() self.idf_values = {}