Add function for adding base data and data reloading.

This commit is contained in:
luxick
2018-02-23 17:11:53 +01:00
parent b0ed96611d
commit af57942ad8
13 changed files with 1154 additions and 566 deletions

View File

@@ -1,4 +1,4 @@
from dsst_sql import models, sql
from dsst_sql import sql
class DSSTCore:

View File

@@ -14,21 +14,22 @@ class Season(Model):
database = connection
class Episode(Model):
class Player(Model):
id = AutoField()
seq_number = IntegerField()
number = CharField()
date = DateTimeField(null=True)
season = ForeignKeyField(Season, backref='episodes')
name = CharField()
hex_id = CharField(null=True)
class Meta:
database = connection
class Player(Model):
class Episode(Model):
id = AutoField()
name = CharField()
hex_id = CharField(null=True)
seq_number = IntegerField()
number = CharField()
date = DateField(null=True)
season = ForeignKeyField(Season, backref='episodes')
players = ManyToManyField(Player, backref='episodes')
class Meta:
database = connection
@@ -46,6 +47,7 @@ class Drink(Model):
class Enemy(Model):
id = AutoField()
name = CharField()
season = ForeignKeyField(Season, backref='enemies')
class Meta:
database = connection
@@ -57,6 +59,7 @@ class Death(Model):
player = ForeignKeyField(Player)
enemy = ForeignKeyField(Enemy)
penalty = ForeignKeyField(Drink)
episode = ForeignKeyField(Episode, backref='deaths')
class Meta:
database = connection
@@ -67,41 +70,14 @@ class Victory(Model):
info = CharField(null=True)
player = ForeignKeyField(Player)
enemy = ForeignKeyField(Enemy)
class Meta:
database = connection
class EpisodePlayer(Model):
id = AutoField()
episode = ForeignKeyField(Episode)
player = ForeignKeyField(Player)
class Meta:
database = connection
class EpisodeDeath(Model):
id = AutoField()
episode = ForeignKeyField(Episode)
death = ForeignKeyField(Death)
class Meta:
database = connection
class EpisodeVictory(Model):
id = AutoField()
episode = ForeignKeyField(Episode)
victory = ForeignKeyField(Victory)
episode = ForeignKeyField(Episode, backref='victories')
class Meta:
database = connection
def create_tables():
models = [Season, Episode, Player, Drink, Enemy, Death, Victory, EpisodePlayer, EpisodeDeath,
EpisodeVictory]
models = [Season, Episode, Player, Drink, Enemy, Death, Victory, Episode.players.get_through_model()]
for model in models:
model.create_table()

22
dsst/dsst_sql/sql_func.py Normal file
View File

@@ -0,0 +1,22 @@
from dsst_sql.sql import *
def get_episodes_for_season(season_id):
try:
return list(Season.get(Season.id == season_id).episodes)
except Episode.DoesNotExist:
return []
def get_player_deaths_for_season(season_id: int, player_id: int) -> int:
deaths = 0
for episode in list(Season.get(Season.id == season_id).episodes):
deaths = deaths + len([death for death in list(episode.deaths) if death.player.id == player_id])
return deaths
def get_player_victories_for_season(season_id: int, player_id: int) -> int:
victories = 0
for episode in list(Season.get(Season.id == season_id).episodes):
victories = victories + len([vic for vic in list(episode.victories) if vic.player.id == player_id])
return victories