Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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]:
Expand Down
10 changes: 10 additions & 0 deletions 3 - PB/MVP/src/backend/adapter/_in/web/rename_chat_controller.py
Original file line number Diff line number Diff line change
@@ -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)
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
Original file line number Diff line number Diff line change
@@ -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()
4 changes: 4 additions & 0 deletions 3 - PB/MVP/src/backend/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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

Expand Down
11 changes: 11 additions & 0 deletions 3 - PB/MVP/src/backend/application/service/rename_chat_service.py
Original file line number Diff line number Diff line change
@@ -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)
30 changes: 30 additions & 0 deletions 3 - PB/MVP/src/backend/blueprints/delete_chats.py
Original file line number Diff line number Diff line change
@@ -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])
33 changes: 33 additions & 0 deletions 3 - PB/MVP/src/backend/blueprints/rename_chat.py
Original file line number Diff line number Diff line change
@@ -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})
Original file line number Diff line number Diff line change
@@ -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