From ba9b91ed956b3e101a43450ff9925281920c32e4 Mon Sep 17 00:00:00 2001 From: AlexChimTrm <132866042+AlexChim1231@users.noreply.github.com> Date: Wed, 23 Apr 2025 16:51:17 +0800 Subject: [PATCH] move to service --- .../service_api/app/conversation.py | 36 ++--------------- api/services/conversation_service.py | 39 +++++++++++++++++++ 2 files changed, 43 insertions(+), 32 deletions(-) diff --git a/api/controllers/service_api/app/conversation.py b/api/controllers/service_api/app/conversation.py index 37905a9e30..73bf78f7c2 100644 --- a/api/controllers/service_api/app/conversation.py +++ b/api/controllers/service_api/app/conversation.py @@ -15,9 +15,10 @@ from fields.conversation_fields import ( conversation_infinite_scroll_pagination_fields, simple_conversation_fields, ) -from fields.conversation_variable_fields import paginated_conversation_variable_fields +from fields.conversation_variable_fields import ( + paginated_conversation_variable_fields, +) from libs.helper import uuid_value -from models import ConversationVariable from models.model import App, AppMode, EndUser from services.conversation_service import ConversationService @@ -109,39 +110,10 @@ class ConversationVariablesApi(Resource): conversation_id = str(c_id) try: - ConversationService.get_conversation(app_model, conversation_id, end_user) + return ConversationService.get_conversational_variable(app_model, conversation_id, end_user) except services.errors.conversation.ConversationNotExistsError: raise NotFound("Conversation Not Exists.") - stmt = ( - select(ConversationVariable) - .where(ConversationVariable.app_id == app_model.id) - .where(ConversationVariable.conversation_id == conversation_id) - .order_by(ConversationVariable.created_at) - ) - - page = 1 - page_size = 100 - stmt = stmt.limit(page_size).offset((page - 1) * page_size) - - with Session(db.engine) as session: - rows = session.scalars(stmt).all() - - return { - "page": page, - "limit": page_size, - "total": len(rows), - "has_more": False, - "data": [ - { - "created_at": row.created_at, - "updated_at": row.updated_at, - **row.to_variable().model_dump(), - } - for row in rows - ], - } - api.add_resource(ConversationRenameApi, "/conversations//name", endpoint="conversation_name") api.add_resource(ConversationApi, "/conversations") diff --git a/api/services/conversation_service.py b/api/services/conversation_service.py index 6485cbf37d..19c1415374 100644 --- a/api/services/conversation_service.py +++ b/api/services/conversation_service.py @@ -9,6 +9,7 @@ from core.app.entities.app_invoke_entities import InvokeFrom from core.llm_generator.llm_generator import LLMGenerator from extensions.ext_database import db from libs.infinite_scroll_pagination import InfiniteScrollPagination +from models import ConversationVariable from models.account import Account from models.model import App, Conversation, EndUser, Message from services.errors.conversation import ConversationNotExistsError, LastConversationNotExistsError @@ -166,3 +167,41 @@ class ConversationService: conversation.is_deleted = True conversation.updated_at = datetime.now(UTC).replace(tzinfo=None) db.session.commit() + + @classmethod + def get_conversational_variable( + cls, + app_model: App, + conversation_id: str, + user: Optional[Union[Account, EndUser]] + ) -> InfiniteScrollPagination: + conversation = cls.get_conversation(app_model, conversation_id, user) + + stmt = ( + select(ConversationVariable) + .where(ConversationVariable.app_id == app_model.id) + .where(ConversationVariable.conversation_id == conversation.id) + .order_by(ConversationVariable.created_at) + ) + + page = 1 + page_size = 100 + stmt = stmt.limit(page_size).offset((page - 1) * page_size) + + with Session(db.engine) as session: + rows = session.scalars(stmt).all() + + return { + "page": page, + "limit": page_size, + "total": len(rows), + "has_more": False, + "data": [ + { + "created_at": row.created_at, + "updated_at": row.updated_at, + **row.to_variable().model_dump(), + } + for row in rows + ], + }