File size: 2,178 Bytes
c6cc0f2
 
 
 
50553ea
 
9150f8e
f000a3c
 
 
50553ea
 
7cfbfed
c6cc0f2
9150f8e
40749a1
50553ea
 
 
c6cc0f2
8e611c3
50553ea
c6cc0f2
50553ea
 
 
 
 
 
 
 
 
 
 
c6cc0f2
198c726
c6cc0f2
40749a1
198c726
9150f8e
f000a3c
 
 
 
 
 
 
 
 
 
7cfbfed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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, update_message_feedback_obj
from trauma.api.message.dto import Feedback
from trauma.api.message.model import MessageModel
from trauma.api.message.schemas import (AllMessageWrapper,
                                        AllMessageResponse,
                                        CreateMessageRequest)
from trauma.core.security import PermissionDependency
from trauma.core.wrappers import TraumaResponseWrapper
from trauma.api.message.utils import decrypt_messages

@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[MessageModel]:
    messages, chat = await get_all_chat_messages_obj(chatId, account)
    messages = decrypt_messages(messages)
    response = await search_entities(message_data.text, messages, chat)
    return TraumaResponseWrapper(data=response)


@message_router.patch('/{messageId}/feedback')
async def create_feedback(
        messageId: str,
        feedback_data: Feedback,
        _: AccountModel = Depends(PermissionDependency([AccountType.Admin, AccountType.User]))
) -> TraumaResponseWrapper[MessageModel]:
    message = await update_message_feedback_obj(messageId, feedback_data)
    return TraumaResponseWrapper(data=message)