One_Piece_Bounty_Bot / src /model /GroupChatAutoDelete.py
github-actions[bot]
Automated sync from GitHub
71e71e8
Raw
History Blame Contribute Delete
1.15 kB
import datetime
from peewee import *
from src.model.BaseModel import BaseModel
from src.model.GroupChat import GroupChat
class GroupChatAutoDelete(BaseModel):
"""
Group Chat Auto Delete class
"""
group_chat: GroupChat | ForeignKeyField = ForeignKeyField(
GroupChat, backref="auto_delete", on_delete="CASCADE"
)
message_id: int | IntegerField = IntegerField()
delete_date: datetime.datetime | DateTimeField = DateTimeField()
class Meta:
db_table = "group_chat_auto_delete"
GroupChatAutoDelete.create_table()
# Auto-migrate: index delete_date. This column is queried every minute by auto_delete()
# (WHERE delete_date < NOW() ... LIMIT 20) with no index, forcing a full table scan on every
# single run, 24/7 - a steady, avoidable cost on a usage-billed database.
try:
from playhouse.migrate import MySQLMigrator, migrate as pw_migrate
from src.model.BaseModel import db_obj
_migrator = MySQLMigrator(db_obj.get_db())
pw_migrate(
_migrator.add_index("group_chat_auto_delete", ("delete_date",), unique=False),
)
except Exception:
pass # Index already exists