Added player cache
This commit is contained in:
parent
1c3e7ef148
commit
e77172d1c3
@ -337,6 +337,15 @@ class Gameplay(commands.Cog):
|
||||
game_state['pitcher'] = pitcher
|
||||
game_state['catcher'] = catcher
|
||||
game_state['channel_id'] = game.channel_id
|
||||
|
||||
if curr_play.inning_half == 'Top':
|
||||
game_state['pitcher']['team'] = home_team
|
||||
game_state['catcher']['team'] = home_team
|
||||
game_state['batter']['team'] = away_team
|
||||
else:
|
||||
game_state['pitcher']['team'] = away_team
|
||||
game_state['catcher']['team'] = away_team
|
||||
game_state['batter']['team'] = home_team
|
||||
logging.debug(f'game_state: {game_state}')
|
||||
|
||||
return game_state
|
||||
|
||||
97
db_calls.py
97
db_calls.py
@ -1,3 +1,7 @@
|
||||
import datetime
|
||||
from dataclasses import dataclass
|
||||
from typing import Optional
|
||||
|
||||
import requests
|
||||
import logging
|
||||
import json
|
||||
@ -7,11 +11,73 @@ AUTH_TOKEN = {'Authorization': f'Bearer {os.environ.get("API_TOKEN")}'}
|
||||
DB_URL = 'https://pd.manticorum.com/api'
|
||||
master_debug = True
|
||||
alt_database = True
|
||||
PLAYER_CACHE = {}
|
||||
|
||||
if alt_database == 'dev':
|
||||
DB_URL = 'https://pddev.manticorum.com/api'
|
||||
|
||||
|
||||
@dataclass
|
||||
class Player:
|
||||
player_id: int
|
||||
p_name: str
|
||||
cost: int
|
||||
image: str
|
||||
mlbclub: str
|
||||
franchise: str
|
||||
cardset: dict
|
||||
set_num: int
|
||||
rarity: dict
|
||||
pos_1: str
|
||||
description: str
|
||||
quantity: Optional[int] = 999
|
||||
image2: Optional[str] = None
|
||||
pos_2: Optional[str] = None
|
||||
pos_3: Optional[str] = None
|
||||
pos_4: Optional[str] = None
|
||||
pos_5: Optional[str] = None
|
||||
pos_6: Optional[str] = None
|
||||
pos_7: Optional[str] = None
|
||||
pos_8: Optional[str] = None
|
||||
headshot: Optional[str] = None
|
||||
vanity_card: Optional[str] = None
|
||||
strat_code: Optional[str] = None
|
||||
bbref_id: Optional[str] = None
|
||||
fangr_id: Optional[str] = None
|
||||
mlbplayer: Optional[dict] = None
|
||||
created: datetime.datetime = datetime.datetime.now()
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'player_id': self.player_id,
|
||||
'p_name': self.p_name,
|
||||
'cost': self.cost,
|
||||
'image': self.image,
|
||||
'mlbclub': self.mlbclub,
|
||||
'franchise': self.franchise,
|
||||
'cardset': self.cardset,
|
||||
'set_num': self.set_num,
|
||||
'rarity': self.rarity,
|
||||
'pos_1': self.pos_1,
|
||||
'description': self.description,
|
||||
'quantity': self.quantity,
|
||||
'image2': self.image2,
|
||||
'pos_2': self.pos_2,
|
||||
'pos_3': self.pos_3,
|
||||
'pos_4': self.pos_4,
|
||||
'pos_5': self.pos_5,
|
||||
'pos_6': self.pos_6,
|
||||
'pos_7': self.pos_7,
|
||||
'pos_8': self.pos_8,
|
||||
'headshot': self.headshot,
|
||||
'vanity_card': self.vanity_card,
|
||||
'strat_code': self.strat_code,
|
||||
'bbref_id': self.bbref_id,
|
||||
'fangr_id': self.fangr_id,
|
||||
'mlbplayer': self.mlbplayer
|
||||
}
|
||||
|
||||
|
||||
def param_char(other_params):
|
||||
if other_params:
|
||||
return '&'
|
||||
@ -19,7 +85,7 @@ def param_char(other_params):
|
||||
return '?'
|
||||
|
||||
|
||||
def get_req_url(endpoint: str, api_ver: int = 1, object_id: int = None, params: list = None):
|
||||
def get_req_url(endpoint: str, api_ver: int = 2, object_id: int = None, params: list = None):
|
||||
req_url = f'{DB_URL}/v{api_ver}/{endpoint}{"/" if object_id is not None else ""}{object_id if object_id is not None else ""}'
|
||||
|
||||
if params:
|
||||
@ -31,7 +97,7 @@ def get_req_url(endpoint: str, api_ver: int = 1, object_id: int = None, params:
|
||||
return req_url
|
||||
|
||||
|
||||
async def db_get(endpoint: str, api_ver: int = 1, object_id: int = None, params: list = None, none_okay: bool = True,
|
||||
async def db_get(endpoint: str, api_ver: int = 2, object_id: int = None, params: list = None, none_okay: bool = True,
|
||||
timeout: int = 3):
|
||||
req_url = get_req_url(endpoint, api_ver=api_ver, object_id=object_id, params=params)
|
||||
log_string = f'get:\n{endpoint} id: {object_id} params: {params}'
|
||||
@ -71,7 +137,7 @@ async def db_get(endpoint: str, api_ver: int = 1, object_id: int = None, params:
|
||||
raise ValueError(f'DB: {resp.text}')
|
||||
|
||||
|
||||
async def db_patch(endpoint: str, object_id: int, params: list, api_ver: int = 1, timeout: int = 3):
|
||||
async def db_patch(endpoint: str, object_id: int, params: list, api_ver: int = 2, timeout: int = 3):
|
||||
req_url = get_req_url(endpoint, api_ver=api_ver, object_id=object_id, params=params)
|
||||
log_string = f'patch:\n{endpoint} {params}'
|
||||
logging.info(log_string) if master_debug else logging.debug(log_string)
|
||||
@ -102,7 +168,7 @@ async def db_patch(endpoint: str, object_id: int, params: list, api_ver: int = 1
|
||||
raise ValueError(f'DB: {resp.text}')
|
||||
|
||||
|
||||
async def db_post(endpoint: str, api_ver: int = 1, payload: dict = None, timeout: int = 3):
|
||||
async def db_post(endpoint: str, api_ver: int = 2, payload: dict = None, timeout: int = 3):
|
||||
req_url = get_req_url(endpoint, api_ver=api_ver)
|
||||
log_string = f'post:\n{endpoint} payload: {payload}\ntype: {type(payload)}'
|
||||
logging.info(log_string) if master_debug else logging.debug(log_string)
|
||||
@ -133,7 +199,7 @@ async def db_post(endpoint: str, api_ver: int = 1, payload: dict = None, timeout
|
||||
raise ValueError(f'DB: {resp.text}')
|
||||
|
||||
|
||||
async def db_delete(endpoint: str, object_id: int, api_ver: int = 1, timeout=3):
|
||||
async def db_delete(endpoint: str, object_id: int, api_ver: int = 2, timeout=3):
|
||||
req_url = get_req_url(endpoint, api_ver=api_ver, object_id=object_id)
|
||||
log_string = f'delete:\n{endpoint} {object_id}'
|
||||
logging.info(log_string) if master_debug else logging.debug(log_string)
|
||||
@ -182,5 +248,26 @@ def team_hash(team):
|
||||
return hash_string
|
||||
|
||||
|
||||
async def get_pd_player(player_id, as_dict: Optional[bool] = True):
|
||||
if player_id in PLAYER_CACHE:
|
||||
tdelta = datetime.datetime.now() - PLAYER_CACHE[player_id].created
|
||||
if tdelta.total_seconds() < 1209600:
|
||||
logging.info(f'this_player: {PLAYER_CACHE[player_id]}')
|
||||
if as_dict:
|
||||
return PLAYER_CACHE[player_id].to_dict()
|
||||
else:
|
||||
return PLAYER_CACHE[player_id]
|
||||
else:
|
||||
logging.error(f'Refreshing player {player_id} in cache...')
|
||||
|
||||
this_player = await db_get('players', object_id=player_id)
|
||||
for bad_key in ['mlbplayer', 'paperdex']:
|
||||
if bad_key in this_player:
|
||||
del this_player[bad_key]
|
||||
logging.debug(f'this_player: {this_player}')
|
||||
PLAYER_CACHE[player_id] = Player(**this_player)
|
||||
|
||||
if as_dict:
|
||||
return this_player
|
||||
return PLAYER_CACHE[player_id]
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ from playhouse.shortcuts import model_to_dict
|
||||
from dataclasses import dataclass
|
||||
|
||||
from helpers import SBA_SEASON, PD_SEASON, get_player_url, get_sheets
|
||||
from db_calls import db_get
|
||||
from db_calls import db_get, get_pd_player
|
||||
|
||||
db = SqliteDatabase(
|
||||
'storage/gameplay.db',
|
||||
@ -786,6 +786,8 @@ def undo_subs(game: StratGame, new_play_num: int):
|
||||
|
||||
async def get_player(game, lineup_member) -> dict:
|
||||
# await asyncio.sleep(0.1)
|
||||
return await get_pd_player(lineup_member.player_id)
|
||||
|
||||
if isinstance(game, Game):
|
||||
if game.is_pd:
|
||||
this_card = await db_get(f'cards', object_id=lineup_member.card_id)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user