jarvis-core/jarvis_core/db/models/modlog.py
2023-03-23 22:06:12 -06:00

53 lines
1.2 KiB
Python

"""Modlog database models."""
from datetime import datetime, timezone
from functools import partial
import nanoid
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