2025-07-01 12:54:48 +00:00

99 lines
2.0 KiB
Python

from pydantic import BaseModel
from datetime import datetime
from typing import Optional, List
from app.models.message import MessageType
class MessageBase(BaseModel):
content: str
message_type: MessageType = MessageType.TEXT
file_url: Optional[str] = None
class MessageCreate(MessageBase):
receiver_id: int
class MessageResponse(MessageBase):
id: int
conversation_id: int
sender_id: int
receiver_id: int
is_read: bool
read_at: Optional[datetime] = None
created_at: datetime
sender_name: Optional[str] = None
class Config:
from_attributes = True
class ConversationResponse(BaseModel):
id: int
participant_1_id: int
participant_2_id: int
created_at: datetime
updated_at: datetime
other_participant_name: Optional[str] = None
other_participant_id: Optional[int] = None
last_message: Optional[str] = None
unread_count: int = 0
class Config:
from_attributes = True
class GroupChatBase(BaseModel):
name: str
description: Optional[str] = None
class GroupChatCreate(GroupChatBase):
member_ids: List[int] = []
class GroupChatResponse(GroupChatBase):
id: int
created_by: int
is_active: bool
created_at: datetime
creator_name: Optional[str] = None
member_count: int = 0
last_message: Optional[str] = None
class Config:
from_attributes = True
class GroupChatMemberResponse(BaseModel):
id: int
group_chat_id: int
user_id: int
is_admin: bool
joined_at: datetime
user_name: Optional[str] = None
class Config:
from_attributes = True
class GroupMessageBase(BaseModel):
content: str
message_type: MessageType = MessageType.TEXT
file_url: Optional[str] = None
class GroupMessageCreate(GroupMessageBase):
pass
class GroupMessageResponse(GroupMessageBase):
id: int
group_chat_id: int
sender_id: int
created_at: datetime
sender_name: Optional[str] = None
class Config:
from_attributes = True