from peewee import * from settings import SQLITE_DB database = SqliteDatabase(SQLITE_DB) class BaseModel(Model): class Meta: database = database # # Order Configuration # class User(BaseModel): telegram_username = TextField(unique=True) telegram_chat_id = IntegerField() class Meta: table_name = 'user' class DomSubUsers(BaseModel): dom = ForeignKeyField(column_name='dom_id', field='id', model=User) sub = ForeignKeyField(column_name='sub_id', field='id', model=User) class Meta: table_name = 'dom_sub' indexes = ( (('dom_id', 'sub_id'), True), ) class OrdersPool(BaseModel): name = TextField() class Meta: table_name = 'orders_pool' class Order(BaseModel): name = TextField() weight = IntegerField() repeat = FloatField() class Meta: table_name = 'order' # # Order State # class PunishmentStatus(BaseModel): confirmed_at = DateTimeField(null=True) # TIMESTAMP created_at = DateTimeField() # TIMESTAMP mastodon_id = TextField() text = TextField() class Meta: table_name = 'punishment_status' class OrderStatus(BaseModel): confirmed_at = DateTimeField(null=True) # TIMESTAMP created_at = DateTimeField() # TIMESTAMP due_at = DateTimeField() # TIMESTAMP mastodon_id = TextField() punishment = ForeignKeyField(column_name='punishment_id', field='id', model=PunishmentStatus, null=True) text = TextField() class Meta: table_name = 'order_status' class Repeat(BaseModel): count = IntegerField(default=0) orders = TextField() probability = FloatField() class Meta: table_name = 'repeat' class SkipDay(BaseModel): date = DateField(unique=True) class Meta: table_name = 'skip_day'