from typing import Text from peewee import ( SqliteDatabase, Model, BigIntegerField, IntegerField, CharField, TextField, DateTimeField, AutoField, FloatField, BooleanField, CompositeKey, ForeignKeyField, ) import datetime db = SqliteDatabase("heimdallr.db") class Infractions(Model): id = AutoField() guild_id = BigIntegerField() user_id = BigIntegerField() at_time = DateTimeField(default=datetime.datetime.now) weight = FloatField(default=1.0) reason = TextField(null=True) given_by = BigIntegerField() silent = BooleanField(default=False) class Meta: table_name = "Infractions" database = db class GuildSettings(Model): guild_id = BigIntegerField(primary_key=True) admin_channel = BigIntegerField(null=True) use_name_filter = BooleanField(default=False) use_gatekeep = BooleanField(default=False) use_joinleave = BooleanField(default=True) use_logging = BooleanField(default=False) class Meta: table_name = "GuildSettings" database = db class JoinLeave(Model): guild_id = BigIntegerField(primary_key=True) join_message = TextField(null=True) leave_message = TextField(null=True) message_channel = BigIntegerField(null=True) join_message_enabled = BooleanField(default=True) leave_message_enabled = BooleanField(default=False) class Meta: table_name = "JoinLeave" database = db class SelfRoles(Model): guild_id = BigIntegerField() role_id = BigIntegerField() role_name = TextField() role_description = TextField() requires = BigIntegerField() class Meta: primary_key = CompositeKey("guild_id", "role_id") table_name = "SelfRoles" database = db class ConditionalRoles(Model): guild_id = BigIntegerField() role_id = BigIntegerField() condition = CharField(max_length=16) condition_data = TextField() class Meta: primary_key = CompositeKey("guild_id", "role_id") table_name = "ConditionalRoles" database = db class BotMessages(Model): guild_id = BigIntegerField() channel_id = BigIntegerField() message_id = BigIntegerField() class Meta: primary_key = CompositeKey("guild_id", "channel_id", "message_id") table_name = "BotMessages" database = db class Resources(Model): id = AutoField() guild_id = BigIntegerField() title = TextField() description = TextField() url = TextField() class Meta: table_name = "Resources" database = db class ResourceTags(Model): resource_id = ForeignKeyField(Resources, to_field="id") tag = TextField() class Meta: primary_key = CompositeKey("resource_id", "tag") table_name = "ResourceTags" database = db class BadNames(Model): id = AutoField() guild_id = BigIntegerField() regex = TextField() class Meta: table_name = "BadNames" database = db class NotifyWords(Model): id = AutoField() guild_id = BigIntegerField() word = TextField() user_to_notify = BigIntegerField() class Meta: table_name = "NotifyWords" database = db