|
|
|
|
|
|
|
|
from app.mapper.base_mapper import BaseMapper |
|
|
from app.model.chat_model import ChatCompletion |
|
|
from app.schema.conversation_schema import ConversationItemResponse |
|
|
|
|
|
|
|
|
class ConversationMapper(BaseMapper[ChatCompletion, ConversationItemResponse]): |
|
|
"""Mapper for converting between ChatCompletion model and ConversationItem schema.""" |
|
|
|
|
|
def to_schema(self, model: ChatCompletion) -> ConversationItemResponse: |
|
|
"""Convert ChatCompletion model to ConversationItem schema.""" |
|
|
|
|
|
|
|
|
title = model.title |
|
|
if not title and model.messages: |
|
|
first_message = model.messages[0] |
|
|
title = first_message.content[:20] + "..." if len(first_message.content) > 20 else first_message.content |
|
|
|
|
|
return ConversationItemResponse( |
|
|
completion_id=model.completion_id, |
|
|
title=title, |
|
|
create_time=model.created_date, |
|
|
update_time=model.last_updated_date, |
|
|
is_archived=model.is_archived, |
|
|
is_starred=model.is_starred, |
|
|
) |
|
|
|
|
|
def to_model(self, schema: ConversationItemResponse) -> ChatCompletion: |
|
|
raise NotImplementedError("ConversationMapper.to_model is not implemented") |
|
|
|