jarvis-core/jarvis_core/db/models/modlog.py

37 lines
1.1 KiB
Python

"""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)