initial commit
This commit is contained in:
0
kurocore/utils/database/__init__.py
Normal file
0
kurocore/utils/database/__init__.py
Normal file
29
kurocore/utils/database/database.py
Normal file
29
kurocore/utils/database/database.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import logging
|
||||
from asyncio import get_event_loop
|
||||
from peewee_async import PostgresqlDatabase, Manager
|
||||
|
||||
from kurocore.logger import BotLogger
|
||||
|
||||
|
||||
class Database:
|
||||
db: PostgresqlDatabase = PostgresqlDatabase(None)
|
||||
manager: Manager
|
||||
|
||||
def __init__(self, settings):
|
||||
db_settings = settings.database
|
||||
|
||||
driver_name = db_settings.driver
|
||||
host = db_settings.host
|
||||
name = db_settings.name
|
||||
user = db_settings.user
|
||||
password = db_settings.password
|
||||
port = db_settings.port
|
||||
|
||||
if driver_name.lower() not in ('postgres', 'postgresql', 'psql'):
|
||||
raise
|
||||
|
||||
Database.db.init(name, user=user, password=password, host=host, port=port)
|
||||
loop = get_event_loop()
|
||||
Database.manager = Manager(Database.db, loop=loop)
|
||||
Database.manager.allow_sync = logging.ERROR
|
||||
BotLogger.log.info('Connected to database')
|
173
kurocore/utils/database/models.py
Normal file
173
kurocore/utils/database/models.py
Normal file
@@ -0,0 +1,173 @@
|
||||
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'
|
Reference in New Issue
Block a user