50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
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)
|