gear-orders/db/models.py

93 lines
2.2 KiB
Python
Raw Normal View History

2025-11-14 04:03:21 +00:00
from peewee import *
from settings import SQLITE_DB
database = SqliteDatabase(SQLITE_DB)
class BaseModel(Model):
class Meta:
database = database
2026-01-09 22:33:38 +00:00
#
# 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()
2026-01-10 03:44:55 +00:00
user = ForeignKeyField(column_name='user_id', field='id', model=User, backref='orders_pools')
2026-01-09 22:33:38 +00:00
class Meta:
table_name = 'orders_pool'
class Order(BaseModel):
name = TextField()
weight = IntegerField()
repeat = FloatField()
2026-01-10 03:44:55 +00:00
pool = ForeignKeyField(column_name='orders_pool_id', field='id', model=OrdersPool, backref='orders')
2026-01-09 22:33:38 +00:00
class Meta:
table_name = 'order'
2026-01-29 21:47:06 +00:00
class OrderAddOn(BaseModel):
name = TextField()
probability = FloatField()
order = ForeignKeyField(column_name='order_id', field='id', model=Order, backref='add_ons')
class Meta:
table_name = 'order_add_on'
2026-01-09 22:33:38 +00:00
#
# Order State
#
2025-11-14 04:03:21 +00:00
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'