63 lines
2.3 KiB
Java
63 lines
2.3 KiB
Java
package com.olympus.apollo.controllers;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
|
import com.olympus.apollo.models.KSDocument;
|
|
import com.olympus.apollo.models.KSIngestionInfo;
|
|
import com.olympus.apollo.repository.KSDocumentRepository;
|
|
import com.olympus.apollo.repository.KSIngestionInfoRepository;
|
|
import com.olympus.apollo.services.StorageFileNotFoundException;
|
|
import com.olympus.apollo.services.StorageService;
|
|
|
|
@Controller
|
|
public class KSFileController {
|
|
@Autowired
|
|
private StorageService storageService;
|
|
@Autowired
|
|
private KSDocumentRepository ksDocumentREpository;
|
|
@Autowired
|
|
private KSIngestionInfoRepository ksIngestionInfoRepository;
|
|
|
|
|
|
@PostMapping("/upload")
|
|
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
|
|
|
|
String filePath = storageService.store(file);
|
|
KSDocument ksDocument = new KSDocument();
|
|
ksDocument.setFilePath(filePath);
|
|
ksDocument.setFileName(file.getOriginalFilename());
|
|
ksDocument.setName(file.getOriginalFilename());
|
|
ksDocument.setDescription("Uploaded file");
|
|
ksDocument.setIngestionStatus("NEW");
|
|
|
|
KSIngestionInfo ksIngestionInfo = new KSIngestionInfo();
|
|
ksIngestionInfo.setType("MD_DOCUMENT"); //TODO: This should be dynamic
|
|
ksIngestionInfo.setVdbIndex("atf_documentation");
|
|
ksIngestionInfo.setMetadata(filePath);
|
|
ksIngestionInfoRepository.save(ksIngestionInfo);
|
|
ksIngestionInfo.setDefaultChunkSize(1000);
|
|
ksIngestionInfo.setMinChunkSize(200);
|
|
ksIngestionInfo.setMaxNumberOfChunks(1000);
|
|
ksIngestionInfo.setMinChunkSizeToEmbed(20);
|
|
|
|
ksDocument.setIngestionInfo(ksIngestionInfo);
|
|
|
|
|
|
|
|
ksDocumentREpository.save(ksDocument);
|
|
return "OK";
|
|
}
|
|
|
|
@ExceptionHandler(StorageFileNotFoundException.class)
|
|
public ResponseEntity<?> handleStorageFileNotFound(StorageFileNotFoundException exc) {
|
|
return ResponseEntity.notFound().build();
|
|
}
|
|
}
|