99 lines
2.0 KiB
Python
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
|