53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
from dsst_server.data_access import sql, sql_func, mapping
|
|
from common import models
|
|
from playhouse import shortcuts
|
|
|
|
|
|
class ReadFunctions:
|
|
@staticmethod
|
|
def load_db_meta(*_):
|
|
return sql.db.database
|
|
|
|
@staticmethod
|
|
def load_seasons(*_):
|
|
return [mapping.db_to_season(season) for season in sql.Season.select()]
|
|
|
|
@staticmethod
|
|
def load_seasons_all(*_):
|
|
return [shortcuts.model_to_dict(season, backrefs=True, max_depth=2) for season in sql.Season.select()]
|
|
|
|
@staticmethod
|
|
def load_episodes(season_id, *_):
|
|
if not season_id:
|
|
raise Exception('Exception: Missing argument (season_id)')
|
|
return [mapping.db_to_episode(ep) for ep in sql.Season.get(sql.Season.id == season_id).episodes]
|
|
|
|
@staticmethod
|
|
def load_players(*_):
|
|
return [mapping.db_to_player(player) for player in sql.Player.select()]
|
|
|
|
@staticmethod
|
|
def load_enemies(season_id, *_):
|
|
pass
|
|
|
|
@staticmethod
|
|
def load_drinks(*_):
|
|
return [mapping.db_to_drink(drink) for drink in sql.Drink.select()]
|
|
|
|
@staticmethod
|
|
def load_season_stats(season_id, *_):
|
|
season = sql.Season.get(sql.Season.id == season_id)
|
|
players = sql_func.players_for_season(season_id)
|
|
model = models.SeasonStats()
|
|
model.player_kd = [(player.name,
|
|
sql_func.get_player_victories_for_season(season_id, player.id),
|
|
sql_func.get_player_deaths_for_season(season_id, player.id))
|
|
for player in players]
|
|
model.enemies = [(enemy.id,
|
|
enemy.name,
|
|
sql_func.enemy_attempts(enemy.id),
|
|
sql.Victory.select().where(sql.Victory.enemy == enemy.id).exists(),
|
|
enemy.boss)
|
|
for enemy in season.enemies]
|
|
return model
|