felicity-lims/felicity/apps/messaging/schemas.py

56 lines
1.1 KiB
Python

from typing import List, Optional
from pydantic import ConfigDict
from felicity.apps.common.schemas import BaseAuditModel
from felicity.apps.user.schemas import User
#
# Message Schemas
#
class MessageBase(BaseAuditModel):
thread_uid: str
thread: Optional["MessageThread"] = None
body: str | None = ""
viewers: Optional[List[User]] = []
deleted_by: Optional[List[User]] = []
parent_id: str | None = None
class Message(MessageBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class MessageCreate(MessageBase):
pass
class MessageUpdate(MessageBase):
pass
#
# MessageThread Schemas
#
class MessageThreadBase(BaseAuditModel):
broadcast: bool | None = False
recipients: Optional[List[User]] = []
messages: Optional[List[Message]] = []
recipients: Optional[List[User]] = []
class MessageThread(MessageThreadBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class MessageThreadCreate(MessageThreadBase):
pass
class MessageThreadUpdate(MessageThreadBase):
pass