Skip to content
Merged
Changes from 1 commit
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
Expand Up @@ -80,54 +80,57 @@ public Mono<APIConnection> datasourceCreate(DatasourceConfiguration datasourceCo
public Mono<TriggerResultDTO> trigger(
APIConnection connection, DatasourceConfiguration datasourceConfiguration, TriggerRequestDTO request) {
log.debug(Thread.currentThread().getName() + ": trigger() called for AppsmithAI plugin.");
SourceDetails sourceDetails = SourceDetails.createSourceDetails(request);
String requestType = request.getRequestType();
if (UPLOAD_FILES.equals(requestType)) {
return aiServerService
.uploadFiles(request.getFiles(), sourceDetails)
.flatMap(response -> {
TriggerResultDTO triggerResultDTO = new TriggerResultDTO();
triggerResultDTO.setTrigger(response);
return Mono.just(triggerResultDTO);
})
.onErrorResume(
error -> handleError("An error has occurred while trying to upload files", error));
} else if (LIST_FILES.equals(requestType)) {
List<String> fileIds = getFileIds(datasourceConfiguration);
if (fileIds.isEmpty()) {
TriggerResultDTO triggerResultDTO = new TriggerResultDTO();
triggerResultDTO.setTrigger(List.of(Map.of(
DISABLED,
true,
LABEL,
"No files available in the datasource",
VALUE,
"NO_FILES_AVAILABLE")));
return Mono.just(triggerResultDTO);
}
return aiServerService
.getFilesStatus(fileIds, sourceDetails)
.flatMap(fileStatusDTO -> {
List<Map<String, Object>> response = new ArrayList<>();
fileStatusDTO.getFiles().forEach(file -> {
Map<String, Object> dropdownOption = new HashMap<>();
if (!file.isProcessed()) {
dropdownOption.put(LABEL, "(Processing...) " + file.getName());
} else {
dropdownOption.put(LABEL, file.getName());
}
dropdownOption.put(VALUE, file.getId());
dropdownOption.put(DISABLED, !file.isProcessed());
response.add(dropdownOption);
});
TriggerResultDTO triggerResultDTO = new TriggerResultDTO();
triggerResultDTO.setTrigger(response);
return Mono.just(triggerResultDTO);
})
.onErrorResume(error ->
handleError("An error has occurred while trying to list uploaded files", error));
return switch (requestType) {
case UPLOAD_FILES -> uploadFiles(request);
case LIST_FILES -> listFiles(datasourceConfiguration, request);
default -> super.trigger(connection, datasourceConfiguration, request);
};
}

private Mono<TriggerResultDTO> uploadFiles(TriggerRequestDTO request) {
SourceDetails sourceDetails = SourceDetails.createSourceDetails(request);
return aiServerService
.uploadFiles(request.getFiles(), sourceDetails)
.flatMap(response -> {
TriggerResultDTO triggerResultDTO = new TriggerResultDTO();
triggerResultDTO.setTrigger(response);
return Mono.just(triggerResultDTO);
})
.onErrorResume(error -> handleError("An error has occurred while trying to upload files", error));
}

private Mono<TriggerResultDTO> listFiles(
DatasourceConfiguration datasourceConfiguration, TriggerRequestDTO request) {
SourceDetails sourceDetails = SourceDetails.createSourceDetails(request);
List<String> fileIds = getFileIds(datasourceConfiguration);
if (fileIds.isEmpty()) {
TriggerResultDTO triggerResultDTO = new TriggerResultDTO();
triggerResultDTO.setTrigger(List.of(Map.of(
DISABLED, true, LABEL, "No files available in the datasource", VALUE, "NO_FILES_AVAILABLE")));
return Mono.just(triggerResultDTO);
}
return super.trigger(connection, datasourceConfiguration, request);
return aiServerService
.getFilesStatus(fileIds, sourceDetails)
.flatMap(fileStatusDTO -> {
List<Map<String, Object>> response = new ArrayList<>();
fileStatusDTO.getFiles().forEach(file -> {
Map<String, Object> dropdownOption = new HashMap<>();
if (!file.isProcessed()) {
dropdownOption.put(LABEL, "(Processing...) " + file.getName());
} else {
dropdownOption.put(LABEL, file.getName());
}
dropdownOption.put(VALUE, file.getId());
dropdownOption.put(DISABLED, !file.isProcessed());
response.add(dropdownOption);
});
TriggerResultDTO triggerResultDTO = new TriggerResultDTO();
triggerResultDTO.setTrigger(response);
return Mono.just(triggerResultDTO);
})
.onErrorResume(
error -> handleError("An error has occurred while trying to list uploaded files", error));
}

private Mono<TriggerResultDTO> handleError(String message, Throwable error) {
Expand Down