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

52 lines
1.2 KiB
Python

"""Modlog database models."""
from datetime import datetime, timezone
from functools import partial
from bson import ObjectId
from beanie import Document
from pydantic import BaseModel, Field
NANOID_ALPHA = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
def get_now() -> datetime:
"""Get proper timestamp."""
return datetime.now(tz=timezone.utc)
def get_id() -> str:
"""Get nanoid."""
return nanoid.generate(NANOID_ALPHA, 12)
NanoField = partial(Field, default_factory=get_id)
NowField = partial(Field, default_factory=get_now)
class Action(BaseModel):
"""Modlog embedded action document."""
action_type: str
parent: ObjectId
orphaned: bool = False
class Note(BaseModel):
"""Modlog embedded note document."""
admin: int
content: str
created_at: datetime = NowField()
class Modlog(Document):
"""Modlog database object."""
user: int
nanoid: str = NanoField()
guild: int
admin: int
actions: list[Action] = Field(default_factory=list)
notes: list[Note] = Field(default_factory=list)
open: bool = True
created_at: datetime = NowField