diff --git a/3 - PB/MVP/src/backend/adapter/_in/web/delete_chats_controller.py b/3 - PB/MVP/src/backend/adapter/_in/web/delete_chats_controller.py index 303ad774..1186e9a3 100644 --- a/3 - PB/MVP/src/backend/adapter/_in/web/delete_chats_controller.py +++ b/3 - PB/MVP/src/backend/adapter/_in/web/delete_chats_controller.py @@ -1,10 +1,10 @@ -from application.port._in.delete_chats_use_case import DeleteChatUseCase +from application.port._in.delete_chats_use_case import DeleteChatsUseCase from domain.chat.chat_operation_response import ChatOperationResponse from typing import List from domain.chat.chat_id import ChatId -class DeleteChatController: - def __init__(self, deleteChatUseCase: DeleteChatUseCase): +class DeleteChatsController: + def __init__(self, deleteChatUseCase: DeleteChatsUseCase): self.useCase = deleteChatUseCase def deleteChats(self, chatsIdsList: List[int]) -> List[ChatOperationResponse]: diff --git a/3 - PB/MVP/src/backend/adapter/_in/web/rename_chat_controller.py b/3 - PB/MVP/src/backend/adapter/_in/web/rename_chat_controller.py new file mode 100644 index 00000000..c525f022 --- /dev/null +++ b/3 - PB/MVP/src/backend/adapter/_in/web/rename_chat_controller.py @@ -0,0 +1,10 @@ +from domain.chat.chat_id import ChatId +from domain.chat.chat_operation_response import ChatOperationResponse +from application.port._in.rename_chat_use_case import RenameChatUseCase + +class RenameChatController: + def __init__(self, renameChatUseCase: RenameChatUseCase): + self.useCase = renameChatUseCase + + def renameChat(self, chatId: int, title: str) -> ChatOperationResponse: + self.useCase.renameChat(ChatId(chatId), title) \ No newline at end of file diff --git a/3 - PB/MVP/src/backend/adapter/out/delete_chats/delete_chats_postgres.py b/3 - PB/MVP/src/backend/adapter/out/delete_chats/delete_chats_postgres.py index df9e1812..e33143d8 100644 --- a/3 - PB/MVP/src/backend/adapter/out/delete_chats/delete_chats_postgres.py +++ b/3 - PB/MVP/src/backend/adapter/out/delete_chats/delete_chats_postgres.py @@ -3,7 +3,6 @@ from domain.chat.chat_id import ChatId from application.port.out.delete_chats_port import DeleteChatsPort from adapter.out.persistence.postgres.postgres_chat_orm import PostgresChatORM -from adapter.out.persistence.postgres.postgres_chat_orm import PostgresChatOperationResponse class DeleteChatsPostgres(DeleteChatsPort): def __init__(self, postgresChatORM: PostgresChatORM): diff --git a/3 - PB/MVP/src/backend/adapter/out/rename_chat/rename_chat_postgres.py b/3 - PB/MVP/src/backend/adapter/out/rename_chat/rename_chat_postgres.py new file mode 100644 index 00000000..1a144712 --- /dev/null +++ b/3 - PB/MVP/src/backend/adapter/out/rename_chat/rename_chat_postgres.py @@ -0,0 +1,12 @@ +from application.port.out.rename_chat_port import RenameChatPort +from domain.chat.chat_id import ChatId +from domain.chat.chat_operation_response import ChatOperationResponse +from adapter.out.persistence.postgres.postgres_chat_orm import PostgresChatORM + +class RenameChatPostgres(RenameChatPort): + def __init__(self, postgresChatORM: PostgresChatORM): + self.outPort = postgresChatORM + + def renameChat(self, chatId: ChatId, title: str) -> ChatOperationResponse: + postgresChatOperationResponse = self.outPort.renameChat(chatId, title) + return postgresChatOperationResponse.toChatOperationResponse() \ No newline at end of file diff --git a/3 - PB/MVP/src/backend/app.py b/3 - PB/MVP/src/backend/app.py index 04952d21..b22289a0 100644 --- a/3 - PB/MVP/src/backend/app.py +++ b/3 - PB/MVP/src/backend/app.py @@ -17,6 +17,8 @@ from blueprints.get_documents import getDocumentsBlueprint from blueprints.get_configuration_options import getConfigurationOptionsBlueprint from blueprints.ask_chatbot import askChatbotBlueprint +from blueprints.delete_chats import deleteChatsBlueprint +from blueprints.rename_chat import renameChatBlueprint app = Flask(__name__) CORS(app) @@ -38,6 +40,8 @@ def shutdown_session(exception=None): app.register_blueprint(changeConfigurationBlueprint) app.register_blueprint(getConfigurationOptionsBlueprint) app.register_blueprint(askChatbotBlueprint) +app.register_blueprint(deleteChatsBlueprint) +app.register_blueprint(renameChatBlueprint) @app.errorhandler(APIBadRequest) def handle_api_error(error): diff --git a/3 - PB/MVP/src/backend/application/port/_in/delete_chats_use_case.py b/3 - PB/MVP/src/backend/application/port/_in/delete_chats_use_case.py index c30f3c6d..0f52812e 100644 --- a/3 - PB/MVP/src/backend/application/port/_in/delete_chats_use_case.py +++ b/3 - PB/MVP/src/backend/application/port/_in/delete_chats_use_case.py @@ -2,6 +2,6 @@ from domain.chat.chat_operation_response import ChatOperationResponse from domain.chat.chat_id import ChatId -class DeleteChatUseCase: +class DeleteChatsUseCase: def deleteChats(self, chatsIdsList: List[ChatId]) -> List[ChatOperationResponse]: pass \ No newline at end of file diff --git a/3 - PB/MVP/src/backend/application/port/_in/rename_chat_use_case.py b/3 - PB/MVP/src/backend/application/port/_in/rename_chat_use_case.py new file mode 100644 index 00000000..d5ff2617 --- /dev/null +++ b/3 - PB/MVP/src/backend/application/port/_in/rename_chat_use_case.py @@ -0,0 +1,6 @@ +from domain.chat.chat_id import ChatId +from domain.chat.chat_operation_response import ChatOperationResponse + +class RenameChatUseCase: + def renameChat(self, chatId: ChatId, titel: str) -> ChatOperationResponse: + pass \ No newline at end of file diff --git a/3 - PB/MVP/src/backend/application/port/out/rename_chat_port.py b/3 - PB/MVP/src/backend/application/port/out/rename_chat_port.py new file mode 100644 index 00000000..2cc13ce6 --- /dev/null +++ b/3 - PB/MVP/src/backend/application/port/out/rename_chat_port.py @@ -0,0 +1,6 @@ +from domain.chat.chat_id import ChatId +from domain.chat.chat_operation_response import ChatOperationResponse + +class RenameChatPort: + def renameChat(self, chatId: ChatId, title: str) -> ChatOperationResponse: + pass \ No newline at end of file diff --git a/3 - PB/MVP/src/backend/application/service/delete_chats_service.py b/3 - PB/MVP/src/backend/application/service/delete_chats_service.py index f43ee9ef..0e2aa5b2 100644 --- a/3 - PB/MVP/src/backend/application/service/delete_chats_service.py +++ b/3 - PB/MVP/src/backend/application/service/delete_chats_service.py @@ -1,10 +1,10 @@ from typing import List from domain.chat.chat_operation_response import ChatOperationResponse from domain.chat.chat_id import ChatId -from application.port._in.delete_chats_use_case import DeleteChatUseCase +from application.port._in.delete_chats_use_case import DeleteChatsUseCase from application.port.out.delete_chats_port import DeleteChatsPort -class DeleteChatService(DeleteChatUseCase): +class DeleteChatsService(DeleteChatsUseCase): def __init__(self, deleteChatsPort: DeleteChatsPort): self.outPort = deleteChatsPort diff --git a/3 - PB/MVP/src/backend/application/service/rename_chat_service.py b/3 - PB/MVP/src/backend/application/service/rename_chat_service.py new file mode 100644 index 00000000..7d9a8bd2 --- /dev/null +++ b/3 - PB/MVP/src/backend/application/service/rename_chat_service.py @@ -0,0 +1,11 @@ +from domain.chat.chat_id import ChatId +from domain.chat.chat_operation_response import ChatOperationResponse +from application.port._in.rename_chat_use_case import RenameChatUseCase +from application.port.out.rename_chat_port import RenameChatPort + +class RenameChatService(RenameChatUseCase): + def __init__(self, renameChatPort: RenameChatPort): + self.outPort = renameChatPort + + def renameChat(self, chatId: ChatId, title: str) -> ChatOperationResponse: + self.outPort.renameChat(chatId, title) \ No newline at end of file diff --git a/3 - PB/MVP/src/backend/blueprints/delete_chats.py b/3 - PB/MVP/src/backend/blueprints/delete_chats.py new file mode 100644 index 00000000..42f0123e --- /dev/null +++ b/3 - PB/MVP/src/backend/blueprints/delete_chats.py @@ -0,0 +1,30 @@ +from flask import request, Blueprint, jsonify +from adapter._in.web.delete_chats_controller import DeleteChatsController +from application.service.delete_chats_service import DeleteChatsService + +from adapter.out.persistence.postgres.postgres_configuration_orm import PostgresConfigurationORM +from adapter.out.configuration_manager import ConfigurationManager +from api_exceptions import InsufficientParameters + +deleteChatsBlueprint = Blueprint("deleteChats", __name__) + +@deleteChatsBlueprint.route("/deleteChats", methods=['POST']) +def deleteChats(): + requestedIds = request.form.getlist('chatIds') + if requestedIds is None: + raise InsufficientParameters() + + configurationManager = ConfigurationManager(postgresConfigurationORM=PostgresConfigurationORM()) + + controller = DeleteChatsController( + DeleteChatsService(configurationManager.getDeleteChatsPort())) + + chatOperationResponses = controller.deleteChats(requestedIds) + + if len(chatOperationResponses) == 0: + return jsonify("Errore nell'eliminazione delle chats."), 500 + + return jsonify([{ + "id": chatOperationResponse.chatId.id, + "status": chatOperationResponse.status, + "message": chatOperationResponse.message} for chatOperationResponse in chatOperationResponses]) \ No newline at end of file diff --git a/3 - PB/MVP/src/backend/blueprints/rename_chat.py b/3 - PB/MVP/src/backend/blueprints/rename_chat.py new file mode 100644 index 00000000..581afbcd --- /dev/null +++ b/3 - PB/MVP/src/backend/blueprints/rename_chat.py @@ -0,0 +1,33 @@ +from flask import request, Blueprint, jsonify +from adapter._in.web.rename_chat_controller import RenameChatController +from application.service.rename_chat_service import RenameChatService + +from adapter.out.persistence.postgres.postgres_configuration_orm import PostgresConfigurationORM +from adapter.out.configuration_manager import ConfigurationManager +from api_exceptions import InsufficientParameters, APIBadRequest + +renameChatBlueprint = Blueprint("renameChat", __name__) + +@renameChatBlueprint.route("/renameChat", methods=['POST']) +def renameChat(): + requestedId = request.form.getlist('chatId') + requestedTitle = request.form.getlist('title') + if requestedId is None: + raise InsufficientParameters() + if requestedTitle is None: + raise APIBadRequest("Il titolo della chat non può essere vuoto.", 400) + + configurationManager = ConfigurationManager(postgresConfigurationORM=PostgresConfigurationORM()) + + controller = RenameChatController( + RenameChatService(configurationManager.getRenameChatPort())) + + chatOperationResponse = controller.renameChat(requestedId, requestedTitle) + + if len(chatOperationResponse) == 0: + return jsonify("Errore nella rinomina della chat."), 500 + + return jsonify({ + "id": chatOperationResponse.chatId.id, + "status": chatOperationResponse.status, + "message": chatOperationResponse.message}) \ No newline at end of file diff --git a/3 - PB/MVP/src/backend/domain/chat/chat_operation_response.py b/3 - PB/MVP/src/backend/domain/chat/chat_operation_response.py index c377a5d0..eb59e3f2 100644 --- a/3 - PB/MVP/src/backend/domain/chat/chat_operation_response.py +++ b/3 - PB/MVP/src/backend/domain/chat/chat_operation_response.py @@ -1,10 +1,9 @@ from dataclasses import dataclass from domain.chat.chat_id import ChatId -from domain.chat.message import Message @dataclass class ChatOperationResponse: status: bool - message: Message + message: str chatId: ChatId \ No newline at end of file