crafty-4/app/migrations/20210813111015_init.py

219 lines
8.3 KiB
Python
Raw Permalink Normal View History

2021-08-18 15:11:53 +00:00
import peewee
import datetime
def migrate(migrator, database, **kwargs):
db = database
2021-08-18 15:11:53 +00:00
class Users(peewee.Model):
user_id = peewee.AutoField()
created = peewee.DateTimeField(default=datetime.datetime.now)
last_login = peewee.DateTimeField(default=datetime.datetime.now)
last_update = peewee.DateTimeField(default=datetime.datetime.now)
last_ip = peewee.CharField(default="")
username = peewee.CharField(default="", unique=True, index=True)
password = peewee.CharField(default="")
enabled = peewee.BooleanField(default=True)
superuser = peewee.BooleanField(default=False)
# we may need to revisit this
api_token = peewee.CharField(default="", unique=True, index=True)
class Meta:
table_name = "users"
database = db
class Roles(peewee.Model):
role_id = peewee.AutoField()
created = peewee.DateTimeField(default=datetime.datetime.now)
last_update = peewee.DateTimeField(default=datetime.datetime.now)
role_name = peewee.CharField(default="", unique=True, index=True)
class Meta:
table_name = "roles"
database = db
class User_Roles(peewee.Model):
user_id = peewee.ForeignKeyField(Users, backref="user_role")
role_id = peewee.ForeignKeyField(Roles, backref="user_role")
2021-08-18 15:11:53 +00:00
class Meta:
table_name = "user_roles"
primary_key = peewee.CompositeKey("user_id", "role_id")
2021-08-18 15:11:53 +00:00
database = db
class Audit_Log(peewee.Model):
audit_id = peewee.AutoField()
created = peewee.DateTimeField(default=datetime.datetime.now)
user_name = peewee.CharField(default="")
user_id = peewee.IntegerField(default=0, index=True)
source_ip = peewee.CharField(default="127.0.0.1")
2021-08-18 15:11:53 +00:00
# When auditing global events, use server ID 0
server_id = peewee.IntegerField(default=None, index=True)
log_msg = peewee.TextField(default="")
2021-08-18 15:11:53 +00:00
class Meta:
database = db
class Host_Stats(peewee.Model):
time = peewee.DateTimeField(default=datetime.datetime.now, index=True)
boot_time = peewee.CharField(default="")
cpu_usage = peewee.FloatField(default=0)
cpu_cores = peewee.IntegerField(default=0)
cpu_cur_freq = peewee.FloatField(default=0)
cpu_max_freq = peewee.FloatField(default=0)
mem_percent = peewee.FloatField(default=0)
mem_usage = peewee.CharField(default="")
mem_total = peewee.CharField(default="")
disk_json = peewee.TextField(default="")
class Meta:
table_name = "host_stats"
database = db
class Servers(peewee.Model):
server_id = peewee.AutoField()
created = peewee.DateTimeField(default=datetime.datetime.now)
server_uuid = peewee.CharField(default="", index=True)
server_name = peewee.CharField(default="Server", index=True)
path = peewee.CharField(default="")
backup_path = peewee.CharField(default="")
executable = peewee.CharField(default="")
log_path = peewee.CharField(default="")
execution_command = peewee.CharField(default="")
auto_start = peewee.BooleanField(default=0)
auto_start_delay = peewee.IntegerField(default=10)
crash_detection = peewee.BooleanField(default=0)
stop_command = peewee.CharField(default="stop")
executable_update_url = peewee.CharField(default="")
server_ip = peewee.CharField(default="127.0.0.1")
server_port = peewee.IntegerField(default=25565)
logs_delete_after = peewee.IntegerField(default=0)
class Meta:
table_name = "servers"
database = db
class User_Servers(peewee.Model):
user_id = peewee.ForeignKeyField(Users, backref="user_server")
server_id = peewee.ForeignKeyField(Servers, backref="user_server")
2021-08-18 15:11:53 +00:00
class Meta:
table_name = "user_servers"
primary_key = peewee.CompositeKey("user_id", "server_id")
2021-08-18 15:11:53 +00:00
database = db
class Role_Servers(peewee.Model):
role_id = peewee.ForeignKeyField(Roles, backref="role_server")
server_id = peewee.ForeignKeyField(Servers, backref="role_server")
2021-08-18 15:11:53 +00:00
class Meta:
table_name = "role_servers"
primary_key = peewee.CompositeKey("role_id", "server_id")
2021-08-18 15:11:53 +00:00
database = db
class Server_Stats(peewee.Model):
stats_id = peewee.AutoField()
created = peewee.DateTimeField(default=datetime.datetime.now)
server_id = peewee.ForeignKeyField(Servers, backref="server", index=True)
2021-08-18 15:11:53 +00:00
started = peewee.CharField(default="")
running = peewee.BooleanField(default=False)
cpu = peewee.FloatField(default=0)
mem = peewee.FloatField(default=0)
mem_percent = peewee.FloatField(default=0)
world_name = peewee.CharField(default="")
world_size = peewee.CharField(default="")
server_port = peewee.IntegerField(default=25565)
int_ping_results = peewee.CharField(default="")
online = peewee.IntegerField(default=0)
max = peewee.IntegerField(default=0)
players = peewee.CharField(default="")
desc = peewee.CharField(default="Unable to Connect")
version = peewee.CharField(default="")
updating = peewee.BooleanField(default=False)
class Meta:
table_name = "server_stats"
database = db
class Commands(peewee.Model):
command_id = peewee.AutoField()
created = peewee.DateTimeField(default=datetime.datetime.now)
server_id = peewee.ForeignKeyField(Servers, backref="server", index=True)
user = peewee.ForeignKeyField(Users, backref="user", index=True)
source_ip = peewee.CharField(default="127.0.0.1")
command = peewee.CharField(default="")
2021-08-18 15:11:53 +00:00
executed = peewee.BooleanField(default=False)
class Meta:
table_name = "commands"
database = db
class Webhooks(peewee.Model):
id = peewee.AutoField()
name = peewee.CharField(max_length=64, unique=True, index=True)
method = peewee.CharField(default="POST")
url = peewee.CharField(unique=True)
event = peewee.CharField(default="")
send_data = peewee.BooleanField(default=True)
class Meta:
table_name = "webhooks"
database = db
class Schedules(peewee.Model):
schedule_id = peewee.IntegerField(unique=True, primary_key=True)
server_id = peewee.ForeignKeyField(Servers, backref="schedule_server")
2021-08-18 15:11:53 +00:00
enabled = peewee.BooleanField()
action = peewee.CharField()
interval = peewee.IntegerField()
interval_type = peewee.CharField()
start_time = peewee.CharField(null=True)
command = peewee.CharField(null=True)
comment = peewee.CharField()
class Meta:
table_name = "schedules"
2021-08-18 15:11:53 +00:00
database = db
class Backups(peewee.Model):
directories = peewee.CharField(null=True)
max_backups = peewee.IntegerField()
server_id = peewee.ForeignKeyField(Servers, backref="backups_server")
schedule_id = peewee.ForeignKeyField(Schedules, backref="backups_schedule")
2021-08-18 15:11:53 +00:00
class Meta:
table_name = "backups"
2021-08-18 15:11:53 +00:00
database = db
migrator.create_table(Backups)
migrator.create_table(Users)
migrator.create_table(Roles)
migrator.create_table(User_Roles)
migrator.create_table(User_Servers)
migrator.create_table(Host_Stats)
migrator.create_table(Webhooks)
migrator.create_table(Servers)
migrator.create_table(Role_Servers)
migrator.create_table(Server_Stats)
migrator.create_table(Commands)
migrator.create_table(Audit_Log)
migrator.create_table(Schedules)
def rollback(migrator, database, **kwargs):
migrator.drop_table("users")
migrator.drop_table("roles")
migrator.drop_table("user_roles")
migrator.drop_table(
"audit_log"
) # ? Not 100% sure of the table name, please specify in the schema
migrator.drop_table("host_stats")
migrator.drop_table("servers")
migrator.drop_table("user_servers")
migrator.drop_table("role_servers")
migrator.drop_table("server_stats")
migrator.drop_table("commands")
migrator.drop_table("webhooks")
migrator.drop_table("schedules")
migrator.drop_table("backups")