136 lines
3.8 KiB
Python
136 lines
3.8 KiB
Python
|
# coding: utf-8
|
||
|
|
||
|
import datetime
|
||
|
from peewee import PostgresqlDatabase
|
||
|
from peewee import Model, UUIDField, CharField, ForeignKeyField, IntegerField, DateTimeField, TextField, FloatField
|
||
|
|
||
|
from app.settings import settings
|
||
|
|
||
|
# connect to database
|
||
|
database = PostgresqlDatabase(
|
||
|
settings.get('Database', 'name'),
|
||
|
host=settings.get('Database', 'host'),
|
||
|
port=settings.getint('Database', 'port'),
|
||
|
user=settings.get('Database', 'user'),
|
||
|
password=settings.get('Database', 'password'),
|
||
|
threadlocals=True,
|
||
|
fields={'uuid': 'uuid'}
|
||
|
)
|
||
|
|
||
|
|
||
|
class PgSQLModel(Model):
|
||
|
class Meta:
|
||
|
database = database
|
||
|
|
||
|
|
||
|
class DataCenters(PgSQLModel):
|
||
|
id = UUIDField(unique=True, primary_key=True, null=False)
|
||
|
code = CharField(unique=True)
|
||
|
name = CharField(unique=True)
|
||
|
country = CharField()
|
||
|
city = CharField()
|
||
|
status = IntegerField(default=0)
|
||
|
|
||
|
|
||
|
class Servers(PgSQLModel):
|
||
|
id = UUIDField(unique=True, primary_key=True)
|
||
|
datacenter = ForeignKeyField(DataCenters, related_name='dcsservers')
|
||
|
secret = CharField()
|
||
|
created = DateTimeField(default=datetime.datetime.now())
|
||
|
status = IntegerField()
|
||
|
ip = CharField(unique=True)
|
||
|
hostname = CharField()
|
||
|
|
||
|
|
||
|
class ServersSettings(PgSQLModel):
|
||
|
server = ForeignKeyField(Servers)
|
||
|
key = CharField()
|
||
|
val = CharField()
|
||
|
|
||
|
|
||
|
class Ips(PgSQLModel):
|
||
|
datacenter = ForeignKeyField(DataCenters)
|
||
|
server = ForeignKeyField(Servers)
|
||
|
ip = CharField()
|
||
|
hostname = CharField()
|
||
|
|
||
|
|
||
|
class Users(PgSQLModel):
|
||
|
id = UUIDField(primary_key=True, unique=True)
|
||
|
email = CharField(unique=True, null=False)
|
||
|
password = CharField()
|
||
|
status = IntegerField()
|
||
|
|
||
|
|
||
|
class UsersRecoveryCodes(PgSQLModel):
|
||
|
user = ForeignKeyField(Users, related_name='usersrecoverycodes')
|
||
|
recovery_code = CharField(null=False)
|
||
|
created = DateTimeField(default=datetime.datetime.now)
|
||
|
|
||
|
|
||
|
class UsersSecrets(PgSQLModel):
|
||
|
user = ForeignKeyField(Users, related_name='userssecrets')
|
||
|
secret = CharField(unique=True, null=False)
|
||
|
acl = TextField()
|
||
|
status = IntegerField()
|
||
|
|
||
|
|
||
|
class UsersDetails(PgSQLModel):
|
||
|
user = ForeignKeyField(Users, related_name='usersdetails')
|
||
|
fname = CharField(null=True)
|
||
|
lname = CharField(null=True)
|
||
|
address = CharField(null=True)
|
||
|
city = CharField(null=True)
|
||
|
country = CharField(null=True)
|
||
|
state = CharField(null=True)
|
||
|
zipcode = IntegerField(null=True)
|
||
|
|
||
|
|
||
|
class UsersBalance(PgSQLModel):
|
||
|
user = ForeignKeyField(Users, related_name='usersbalance')
|
||
|
balance = FloatField(default=0, null=False)
|
||
|
|
||
|
|
||
|
class UsersBalanceTransactions(PgSQLModel):
|
||
|
id = IntegerField(primary_key=True, null=False, sequence='nextval')
|
||
|
user = ForeignKeyField(Users, related_name='usersbalancetransaction')
|
||
|
amount = FloatField(default=0, null=False)
|
||
|
created = DateTimeField(default=datetime.datetime.now)
|
||
|
notified = IntegerField(null=False, default=0)
|
||
|
status = TextField(null=False)
|
||
|
|
||
|
|
||
|
class Containers(PgSQLModel):
|
||
|
id = UUIDField(primary_key=True, unique=True)
|
||
|
server = ForeignKeyField(Servers)
|
||
|
user = ForeignKeyField(Users)
|
||
|
ip = CharField()
|
||
|
status = IntegerField()
|
||
|
|
||
|
|
||
|
class ContainerTraffic(PgSQLModel):
|
||
|
id = UUIDField(primary_key=True, unique=True)
|
||
|
container = ForeignKeyField(Containers)
|
||
|
timestamp = DateTimeField()
|
||
|
|
||
|
|
||
|
class Tasks(PgSQLModel):
|
||
|
id = UUIDField(primary_key=True, unique=True)
|
||
|
datacenter = ForeignKeyField(DataCenters, related_name='dcstasks')
|
||
|
server = ForeignKeyField(Servers, related_name='serverstasks')
|
||
|
user = ForeignKeyField(Users, related_name='userstasks')
|
||
|
created = DateTimeField(default=datetime.datetime.now)
|
||
|
plain = TextField()
|
||
|
|
||
|
|
||
|
class Settings(PgSQLModel):
|
||
|
key = TextField(unique=True, null=False)
|
||
|
val = TextField(null=True)
|
||
|
|
||
|
|
||
|
class Admins(PgSQLModel):
|
||
|
id = UUIDField(primary_key=True, unique=True)
|
||
|
email = CharField(unique=True, null=False)
|
||
|
password = CharField()
|
||
|
status = IntegerField()
|