from fastapi import Depends from trauma.api.account.dto import AccountType from trauma.api.account.model import AccountModel from trauma.api.common.dto import Paging from trauma.api.message import message_router from trauma.api.message.ai.engine import search_entities from trauma.api.message.db_requests import get_all_chat_messages_obj from trauma.api.message.schemas import (AllMessageWrapper, AllMessageResponse, CreateMessageRequest, CreateMessageResponse) from trauma.api.message.utils import transform_messages_to_openai from trauma.core.security import PermissionDependency from trauma.core.wrappers import TraumaResponseWrapper @message_router.get('/{chatId}/all') async def get_all_chat_messages( chatId: str, account: AccountModel = Depends(PermissionDependency([AccountType.Admin, AccountType.User])), ) -> AllMessageWrapper: messages, _ = await get_all_chat_messages_obj(chatId, account) response = AllMessageResponse( paging=Paging(pageSize=len(messages), pageIndex=0, totalCount=len(messages)), data=messages ) return AllMessageWrapper(data=response) @message_router.post('/{chatId}') async def create_message( chatId: str, message_data: CreateMessageRequest, account: AccountModel = Depends(PermissionDependency([AccountType.Admin, AccountType.User])) ) -> TraumaResponseWrapper[CreateMessageResponse]: messages, chat = await get_all_chat_messages_obj(chatId, account) message_history = transform_messages_to_openai(messages) response = await search_entities(message_data.text, message_history, chat) return TraumaResponseWrapper(data=response)