"""User action models.""" from datetime import datetime, timezone from umongo import Document, fields from jarvis_core.db import JARVIS_INST from jarvis_core.db.utils import get_now @JARVIS_INST.register class Ban(Document): active: bool = fields.BooleanField(default=True) admin: int = fields.IntegerField(required=True) user: int = fields.IntegerField(required=True) username: str = fields.StringField(required=True) discrim: int = fields.IntegerField(required=True) duration: int = fields.IntegerField(required=False, default=None) guild: int = fields.IntegerField(required=True) type: str = fields.StringField(default="perm") reason: str = fields.StringField(required=True) created_at: datetime = fields.AwareDateTimeField(default=get_now) @JARVIS_INST.register class Kick(Document): """Kick database object.""" admin: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True) reason: str = fields.StringField(required=True) user: int = fields.IntegerField(required=True) created_at: datetime = fields.AwareDateTimeField(default=get_now) @JARVIS_INST.register class Mute(Document): """Mute database object.""" active: bool = fields.BooleanField(default=True) user: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True) duration: int = fields.IntegerField(default=10) guild: int = fields.IntegerField(required=True) reason: str = fields.StringField(required=True) created_at: datetime = fields.AwareDateTimeField(default=get_now) @JARVIS_INST.register class Unban(Document): """Unban database object.""" user: int = fields.IntegerField(required=True) username: str = fields.StringField(required=True) discrim: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True) reason: str = fields.StringField(required=True) created_at: datetime = fields.AwareDateTimeField(default=get_now) @JARVIS_INST.register class Warning(Document): """Warning database object.""" active: bool = fields.BooleanField(default=True) admin: int = fields.IntegerField(required=True) user: int = fields.IntegerField(required=True) guild: int = fields.IntegerField(required=True) duration: int = fields.IntegerField(default=24) reason: str = fields.StringField(required=True) expires_at: datetime = fields.AwareDateTimeField(required=True) created_at: datetime = fields.AwareDateTimeField(default=get_now)