126 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from datetime import datetime
 | 
						|
from typing import Optional
 | 
						|
 | 
						|
from schemas.base import BaseSchema, OkMessageSchema
 | 
						|
from schemas.user import UserSchema
 | 
						|
 | 
						|
 | 
						|
# region Entities
 | 
						|
 | 
						|
class TgUserSchema(BaseSchema):
 | 
						|
    id: int
 | 
						|
    first_name: str
 | 
						|
    last_name: str
 | 
						|
    username: str
 | 
						|
 | 
						|
 | 
						|
class MessageFileSchema(BaseSchema):
 | 
						|
    id: int
 | 
						|
    file_path: str
 | 
						|
    type: str
 | 
						|
    file_name: str
 | 
						|
    file_size: int
 | 
						|
 | 
						|
 | 
						|
class BaseMessageSchema(BaseSchema):
 | 
						|
    text: str
 | 
						|
    chat_id: int
 | 
						|
 | 
						|
 | 
						|
class EditMessageSchema(BaseMessageSchema):
 | 
						|
    id: int
 | 
						|
 | 
						|
 | 
						|
class MessageSchema(EditMessageSchema):
 | 
						|
    created_at: datetime
 | 
						|
    tg_sender: Optional[TgUserSchema]
 | 
						|
    crm_sender: Optional[UserSchema]
 | 
						|
    status: str
 | 
						|
    is_edited: bool
 | 
						|
    file: Optional[MessageFileSchema] = None
 | 
						|
 | 
						|
 | 
						|
class RepeatSendingMessageSchema(BaseMessageSchema):
 | 
						|
    text: str
 | 
						|
    id: int
 | 
						|
 | 
						|
 | 
						|
class TgGroupSchema(BaseSchema):
 | 
						|
    tg_group_id: int
 | 
						|
    tg_invite_link: str
 | 
						|
 | 
						|
 | 
						|
class ChatSchema(BaseSchema):
 | 
						|
    id: int
 | 
						|
    client_id: Optional[int]
 | 
						|
    card_id: Optional[int]
 | 
						|
    tg_group: Optional[TgGroupSchema]
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Requests
 | 
						|
 | 
						|
class SendTextMessageRequest(BaseSchema):
 | 
						|
    message: BaseMessageSchema
 | 
						|
 | 
						|
 | 
						|
class RepeatSendingTextMessageRequest(BaseSchema):
 | 
						|
    message: RepeatSendingMessageSchema
 | 
						|
 | 
						|
 | 
						|
class EditMessageRequest(BaseSchema):
 | 
						|
    message: EditMessageSchema
 | 
						|
 | 
						|
 | 
						|
class GetChatRequest(BaseSchema):
 | 
						|
    client_id: int
 | 
						|
    card_id: Optional[int]
 | 
						|
 | 
						|
 | 
						|
class CreateChatRequest(BaseSchema):
 | 
						|
    client_id: int
 | 
						|
    card_id: Optional[int]
 | 
						|
 | 
						|
 | 
						|
class GetMessagesRequest(BaseSchema):
 | 
						|
    chat_id: int
 | 
						|
    offset: int
 | 
						|
    limit: int
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Responses
 | 
						|
 | 
						|
class SendTextMessageResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class RepeatSendingTextMessageResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class LoadMessagesResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class DeleteMessageResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class EditMessageResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class GetChatResponse(BaseSchema):
 | 
						|
    chat: Optional[ChatSchema]
 | 
						|
 | 
						|
 | 
						|
class CreateChatResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class GetMessagesResponse(BaseSchema):
 | 
						|
    messages: list[MessageSchema]
 | 
						|
 | 
						|
# endregion
 |