diff --git a/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/AppsmithAiPlugin.java b/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/AppsmithAiPlugin.java index 02ffc4241756..7fd4776a8f47 100644 --- a/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/AppsmithAiPlugin.java +++ b/app/server/appsmith-plugins/appsmithAiPlugin/src/main/java/com/external/plugins/AppsmithAiPlugin.java @@ -166,41 +166,58 @@ public Mono executeCommon( ExecuteActionDTO executeActionDTO) { log.debug(Thread.currentThread().getName() + ": executeCommon() called for AppsmithAI plugin."); - // Initializing object for error condition - ActionExecutionResult errorResult = new ActionExecutionResult(); - initUtils.initializeResponseWithError(errorResult); Feature feature = Feature.valueOf(RequestUtils.extractDataFromFormData(actionConfiguration.getFormData(), USECASE)); AiFeatureService aiFeatureService = AiFeatureServiceFactory.getAiFeatureService(feature); Query query = aiFeatureService.createQuery(actionConfiguration, datasourceConfiguration, executeActionDTO); AiServerRequestDTO aiServerRequestDTO = new AiServerRequestDTO(feature, query); - ActionExecutionResult actionExecutionResult = new ActionExecutionResult(); ActionExecutionRequest actionExecutionRequest = RequestCaptureFilter.populateRequestFields( actionConfiguration, RequestUtils.getQueryUri(), insertedParams, objectMapper); + SourceDetails sourceDetails = SourceDetails.createSourceDetails(executeActionDTO); + + return handleExecution(aiFeatureService, aiServerRequestDTO, sourceDetails, actionExecutionRequest); + } + + private Mono handleExecution( + AiFeatureService aiFeatureService, + AiServerRequestDTO aiServerRequestDTO, + SourceDetails sourceDetails, + ActionExecutionRequest actionExecutionRequest) { + Mono actionExecutionResultMono; + actionExecutionResultMono = + handleExecuteForAiServerService(aiServerRequestDTO, sourceDetails, actionExecutionRequest); + return actionExecutionResultMono.onErrorResume(this::handleError); + } + + private Mono handleExecuteForAiServerService( + AiServerRequestDTO aiServerRequestDTO, + SourceDetails sourceDetails, + ActionExecutionRequest actionExecutionRequest) { return aiServerService - .executeQuery(aiServerRequestDTO, SourceDetails.createSourceDetails(executeActionDTO)) + .executeQuery(aiServerRequestDTO, sourceDetails) .map(response -> { + ActionExecutionResult actionExecutionResult = new ActionExecutionResult(); actionExecutionResult.setIsExecutionSuccess(true); actionExecutionResult.setBody(response); actionExecutionResult.setRequest(actionExecutionRequest); return actionExecutionResult; - }) - .onErrorResume(error -> { - errorResult.setIsExecutionSuccess(false); - log.error( - "An error has occurred while trying to run the AI server API query. Error: {}", - error.getMessage()); - if (!(error instanceof AppsmithPluginException)) { - error = new AppsmithPluginException( - AppsmithPluginError.PLUGIN_ERROR, error.getMessage(), error); - } - errorResult.setErrorInfo(error); - return Mono.just(errorResult); }); } + private Mono handleError(Throwable error) { + ActionExecutionResult errorResult = new ActionExecutionResult(); + initUtils.initializeResponseWithError(errorResult); + log.error( + "An error has occurred while trying to run the AI server API query. Error: {}", error.getMessage()); + if (!(error instanceof AppsmithPluginException)) { + error = new AppsmithPluginException(AppsmithPluginError.PLUGIN_ERROR, error.getMessage(), error); + } + errorResult.setErrorInfo(error); + return Mono.just(errorResult); + } + @Override public Set validateDatasource(DatasourceConfiguration datasourceConfiguration, boolean isEmbedded) { log.debug(Thread.currentThread().getName() + ": validateDatasource() called for AppsmithAI plugin.");