Database-backed Webhosting

This commit is contained in:
Fabian Dill
2020-06-20 20:03:06 +02:00
parent 7e3ee8101f
commit 9e18c6f1cd
11 changed files with 325 additions and 125 deletions

49
WebHost/models.py Normal file
View File

@@ -0,0 +1,49 @@
from datetime import datetime
from uuid import UUID, uuid4
from pony.orm import *
db = Database()
class Patch(db.Entity):
id = PrimaryKey(int, auto=True)
data = Required(buffer)
simple_seed = Required('Seed')
class Room(db.Entity):
id = PrimaryKey(int, auto=True)
last_activity = Required(datetime, default=lambda: datetime.utcnow())
owner = Required(UUID)
commands = Set('Command')
host_jobs = Set('HostJob')
seed = Required('Seed')
multisave = Optional(Json)
class HostJob(db.Entity):
id = PrimaryKey(int, auto=True)
sockets = Set('Socket')
room = Required(Room)
scheduler_id = Required(int, unique=True)
class Socket(db.Entity):
port = PrimaryKey(int)
ipv6 = Required(bool)
host_job = Required(HostJob)
class Seed(db.Entity):
id = PrimaryKey(int, auto=True)
rooms = Set(Room)
multidata = Optional(Json)
creation_time = Required(datetime, default=lambda: datetime.utcnow())
patches = Set(Patch)
spoiler = Optional(str)
class Command(db.Entity):
id = PrimaryKey(int, auto=True)
room = Required(Room)
commandtext = Required(str)