"""Modlog database models.""" from datetime import datetime from typing import List from bson import ObjectId from umongo import Document, EmbeddedDocument, fields from jarvis_core.db import JARVIS_INST @JARVIS_INST.register class Action(EmbeddedDocument): """Modlog embedded action document.""" action_type: str = fields.StringField(required=True) parent: ObjectId = fields.ObjectIdField(required=True) @JARVIS_INST.register class Note(EmbeddedDocument): """Modlog embedded note document.""" admin: int = fields.IntegerField(required=True) content: str = fields.StrField(required=True) created_at: datetime = fields.DateTimeField(default=datetime.utcnow) @JARVIS_INST.register class Modlog(Document): """Modlog database object.""" user: int = fields.IntegerField(required=True) admin: int = fields.IntegerField(required=True) actions: List[Action] = fields.ListField(fields.EmbeddedField(Action), factory=list) open: bool = fields.BoolField(default=True) created_at: datetime = fields.DateTimeField(default=datetime.utcnow) notes: List[Note] = fields.ListField(fields.EmbeddedField(Note), factory=list)