from peewee import Model, IntegerField, BigIntegerField, DecimalField, TextField, ForeignKeyField, DateTimeField, \ BooleanField, CompositeKey, CharField, AutoField # from plugins import models from utils.database.database import Database class BaseModel(Model): class Meta: database = Database.db class Groups(BaseModel): id = IntegerField(null=False) name = TextField(default='') is_vip = BooleanField(default=False) is_admin = BooleanField(default=False) is_tester = BooleanField(default=False) multiplier = DecimalField(default=1) sale = DecimalField(default=1) max_multigen = IntegerField(default=3) class Works(BaseModel): id = IntegerField(null=False) name = TextField(default='') required_lvl = IntegerField(default=1) money_income = DecimalField(default=0) min_exp = IntegerField(default=0) max_exp = IntegerField(default=0) class Fractions(BaseModel): id = IntegerField() name = TextField(default='Без названия', null=False) owner_id = IntegerField(null=False) money = DecimalField() exp = IntegerField() level = IntegerField() class Auto(BaseModel): id = IntegerField() name = TextField() price = DecimalField() class Meta: table_name = 'shop_auto' class Business(BaseModel): id = IntegerField() name = TextField() price = DecimalField() income = DecimalField() class Meta: table_name = 'shop_business' class Maid(BaseModel): id = IntegerField() name = TextField() price = DecimalField() income = DecimalField() class Meta: table_name = 'shop_maid' class Miner(BaseModel): id = IntegerField() name = TextField() price = DecimalField() income = DecimalField() class Meta: table_name = 'shop_miner' class Users(BaseModel): id = IntegerField() user_id = BigIntegerField() name = TextField() greeting = TextField() pair = IntegerField() donat = IntegerField() balance = DecimalField(default=10000, max_digits=20) invested = DecimalField(default=0, max_digits=20) btc = DecimalField(default=0, max_digits=20, decimal_places=6) level = IntegerField() exp = DecimalField(default=0) group_id = IntegerField() group = ForeignKeyField(Groups) fraction = ForeignKeyField(Fractions, null=True, lazy_load=True) work = ForeignKeyField(Works) work_time = DateTimeField() income_time = DateTimeField() auto = ForeignKeyField(Auto) business = ForeignKeyField(Business) maid = ForeignKeyField(Maid) miner = ForeignKeyField(Miner) subscribed = BooleanField() class Reports(BaseModel): id = IntegerField(unique=True, null=False, primary_key=True) text = TextField(null=False) admin_answer = TextField(null=True) from_id = BigIntegerField(null=False) date = DateTimeField() status = CharField(null=False) attachments = TextField(null=True) class FractionMember(BaseModel): fraction = ForeignKeyField(Fractions) user = ForeignKeyField(Users) is_moderator = BooleanField() is_admin = BooleanField() class Meta: table_name = 'fraction_member' primary_key = CompositeKey('fraction', 'user') # WD class WDModels(BaseModel): model_id = IntegerField(null=False) name = TextField(null=False) image = TextField(null=False) description = TextField(null=False) class Meta: table_name = 'wd_models' class WDUsers(BaseModel): user_id = IntegerField(null=False) model = ForeignKeyField(WDModels) model_id = IntegerField(null=False, default=1) orientation = TextField(null=False, default='PORTRAIT') class Meta: table_name = 'wd_users' primary_key = CompositeKey('user_id', 'model_id') class WDLoras(BaseModel): id = IntegerField(null=False) name = TextField(null=False, default='NOT SET') trigger_prompt = TextField(null=False, default='') prompt_mixin = TextField(null=False, default='') class Meta: table_name = 'wd_loras' primary_key = CompositeKey('id', 'trigger_prompt') class WDPrompts(BaseModel): id = AutoField(null=False) user_id = IntegerField(null=False) prompt = TextField(null=False) class Meta: table_name = 'wd_prompts'