Add sql models and domain models

This commit is contained in:
luxick
2018-02-22 00:10:35 +01:00
commit 88a331ee75
5 changed files with 331 additions and 0 deletions

93
.gitignore vendored Normal file
View File

@@ -0,0 +1,93 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# IPython Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# dotenv
.env
# virtualenv
.venv/
venv/
ENV/
# Spyder project settings
.spyderproject
# Rope project settings
.ropeproject
.idea
install.txt

View File

59
dsst/dsst_core/core.py Normal file
View File

@@ -0,0 +1,59 @@
import datetime
from dsst_core import models, sql
class DSSTCore:
def __init__(self):
# Set DB Connection
sql.create_tables()
@staticmethod
def insert_player(model: models.Player):
sql.Player.create(name=model.name, hex_id=model.hex_id)
@staticmethod
def insert_enemy(enemy: models.Enemy):
sql.Enemy.create(name=enemy.name)
@staticmethod
def insert_drink(model: models.Drink):
sql.Drink.create(name=model.name, vol=model.vol)
@staticmethod
def insert_season(season: models.Season):
sql.Season.create(number=season.number, game_name=season.game_name, start_date=season.start_date,
end_date=season.end_date)
@staticmethod
def insert_episode(episode: models.Episode):
sql.Episode.update()
if __name__ == '__main__':
core = DSSTCore()
# Insert player
# player = models.Player()
# player.name = 'Marvin'
# core.insert_player(player)
# Insert a Season
# season = models.Season()
# season.number = 1
# season.game_name = 'Dark Souls'
# season.start_date = datetime.date(2017, 1, 1)
# core.insert_season(season)
# core.insert_drink(models.Drink({'name': 'Pfeffi', 'vol': 22.5}))
# core.insert_enemy(models.Enemy({'name': 'Newton'}))
# Insert an episode
ep = models.Episode()
ep.date = datetime.date(2017, 2, 5)
ep.number = 1
ep.seq_number = 1
ep.players = [models.Player({'id': 1,}), models.Player({'id': 2})]
ep.deaths = [models.Death({
'player': 1,
'enemy': 1,
'penalty': 1,
})]

63
dsst/dsst_core/models.py Normal file
View File

@@ -0,0 +1,63 @@
class Season:
def __init__(self, arg={}):
self.id = arg.get('id')
self.game_name = arg.get('game_name')
self.number = arg.get('number')
self.start_date = arg.get('start_date')
self.end_date = arg.get('end_date')
self.players = arg.get('players')
self.enemies = arg.get('enemies')
self.episodes = arg.get('episodes')
class Episode:
def __init__(self, arg={}):
self.id = arg.get('id')
self.seq_number = arg.get('seq_number')
self.number = arg.get('number')
self.date = arg.get('date')
self.players = arg.get('players')
self.enemies = arg.get('enemies')
self.deaths = arg.get('deaths')
self.victories = arg.get('victories')
class GameEvent:
def __init__(self, arg={}):
self.id = arg.get('id')
self.player = arg.get('player')
self.enemy = arg.get('enemy')
self.info = arg.get('info')
class Death(GameEvent):
def __init__(self, arg={}):
GameEvent.__init__(self, arg)
self.penalty = arg.get('penalty')
class Victory(GameEvent):
def __init__(self, arg={}):
GameEvent.__init__(self, arg)
class Player:
def __init__(self, arg={}):
self.id = arg.get('id')
self.name = arg.get('name')
self.hex_id = arg.get('hex_id')
class Enemy:
def __init__(self, arg={}):
self.id = arg.get('id')
self.name = arg.get('name')
class Drink:
def __init__(self, arg={}):
self.id = arg.get('id')
self.name = arg.get('name')
self.vol = arg.get('vol')

116
dsst/dsst_core/sql.py Normal file
View File

@@ -0,0 +1,116 @@
from peewee import *
connection = MySQLDatabase('dsst', user='dsst', password='dsst')
class Season(Model):
id = AutoField()
number = IntegerField()
game_name = CharField()
start_date = DateField(null=True)
end_date = DateField(null=True)
class Meta:
database = connection
class Episode(Model):
id = AutoField()
seq_number = IntegerField()
number = CharField()
date = DateTimeField(null=True)
class Meta:
database = connection
class Player(Model):
id = AutoField()
name = CharField()
hex_id = CharField(null=True)
class Meta:
database = connection
class Drink(Model):
id = AutoField()
name = CharField()
vol = DecimalField()
class Meta:
database = connection
class Enemy(Model):
id = AutoField()
name = CharField()
class Meta:
database = connection
class Death(Model):
id = AutoField()
info = CharField(null=True)
player = ForeignKeyField(Player)
enemy = ForeignKeyField(Enemy)
penalty = ForeignKeyField(Drink)
class Meta:
database = connection
class Victory(Model):
id = AutoField()
info = CharField(null=True)
player = ForeignKeyField(Player)
enemy = ForeignKeyField(Enemy)
class Meta:
database = connection
class SeasonEpisode(Model):
id = AutoField()
season = ForeignKeyField(Season)
episode = ForeignKeyField(Episode)
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)
class Meta:
database = connection
def create_tables():
models = [Season, Episode, Player, Drink, Enemy, Death, Victory, SeasonEpisode, EpisodePlayer, EpisodeDeath,
EpisodeVictory]
for model in models:
model.create_table()