Files
DrunkSoulsStatTool/dsst/dsst_sql/core.py

56 lines
2.1 KiB
Python

from dsst_sql import sql
class DSSTCore:
def __init__(self):
# Set DB Connection
sql.create_tables()
@staticmethod
def insert_player(model: models.Player):
return sql.Player.create(name=model.name, hex_id=model.hex_id)
@staticmethod
def insert_enemy(enemy: models.Enemy):
return sql.Enemy.create(name=enemy.name)
@staticmethod
def insert_drink(model: models.Drink):
return sql.Drink.create(name=model.name, vol=model.vol)
@staticmethod
def insert_season(season: models.Season):
return sql.Season.create(number=season.number, game_name=season.game_name, start_date=season.start_date,
end_date=season.end_date)
@staticmethod
def insert_death(death: models.Death):
return sql.Death.create(info=death.info, player=death.player.id, enemy=death.enemy.id, penalty=death.penalty.id)
@staticmethod
def insert_victory(victory: models.Victory):
return sql.Death.create(info=victory.info, player=victory.player.id, enemy=victory.enemy.id)
@staticmethod
def insert_episode(season_id: int, episode: models.Episode):
with sql.connection.atomic():
# Insert Episode Row
new_ep = sql.Episode.create(seq_number=episode.seq_number, number=episode.number, date=episode.date,
season=season_id)
# Insert participating players
for player in episode.players:
sql.EpisodePlayer.insert(episode=new_ep.id, player=player.id)
# Insert deaths in this episode
if episode.deaths:
for death in episode.deaths:
new_death = DSSTCore.insert_death(death)
sql.EpisodeDeath.create(death=new_death.id, episode=new_ep.id)
# Insert victories in this episode
if episode.victories:
for victory in episode.victories:
new_vic = DSSTCore.insert_victory(victory)
sql.EpisodeVictory.create(victory=new_vic.id, episode=new_ep.id)
if __name__ == '__main__':
core = DSSTCore()