From 349f0fb1e64a609e8c45f52cd0da4de4681e123f Mon Sep 17 00:00:00 2001 From: esoe Date: Mon, 8 Jul 2024 17:59:54 +0300 Subject: [PATCH] qq --- .../gates/controller/CourseController.java | 2 - .../gates/controller/GatesController.java | 146 ++++++++++-------- .../main/resources/static/content/md/hello.md | 36 ++++- 3 files changed, 117 insertions(+), 67 deletions(-) diff --git a/gates/src/main/java/ru/mlokoin/gates/controller/CourseController.java b/gates/src/main/java/ru/mlokoin/gates/controller/CourseController.java index 4e6366b..f1ded54 100644 --- a/gates/src/main/java/ru/mlokoin/gates/controller/CourseController.java +++ b/gates/src/main/java/ru/mlokoin/gates/controller/CourseController.java @@ -3,7 +3,6 @@ package ru.mlokoin.gates.controller; import java.time.Duration; import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -25,7 +24,6 @@ import reactor.core.publisher.Mono; import ru.mlokoin.gates.model.Building; import ru.mlokoin.gates.model.Course; import ru.mlokoin.gates.model.Program; -import ru.mlokoin.gates.model.ProgramCretarea; import ru.mlokoin.gates.model.ProgramWraper; import ru.mlokoin.gates.model.Teacher; import ru.mlokoin.gates.model.XlsxCell; diff --git a/gates/src/main/java/ru/mlokoin/gates/controller/GatesController.java b/gates/src/main/java/ru/mlokoin/gates/controller/GatesController.java index 32a34ee..dd83b6e 100644 --- a/gates/src/main/java/ru/mlokoin/gates/controller/GatesController.java +++ b/gates/src/main/java/ru/mlokoin/gates/controller/GatesController.java @@ -36,6 +36,29 @@ public class GatesController { @Autowired private WebClient client; + /** + * Get list of documents from the resource service API and add to model + * - endpoint: /document/list + * + * @param model the model to add the documents to + * @return the view name "documents" + */ + @GetMapping("/document/list") + public String getMethodName(Model model) { + // Call the resource service API to get the list of documents + List docs = client.method(HttpMethod.GET) + .uri("http://resource-service-api:8181/storage-entry/list") + .retrieve() + .bodyToMono(new ParameterizedTypeReference >(){}) + .block(); + + // Add the list of documents to the model + model.addAttribute("documents", docs); + + // Return the view name "documents" + return "documents"; + } + /** * Получение списка файлов с сервера и доступа к инструментам извлечения данных * - template : storage.html @@ -105,16 +128,19 @@ public class GatesController { /** - * Удаление файла из хранилища - * и возврат пользователю страницы работы с файлами - * !!! Добавить удаление записи из базы - * !!! Обернуть в транзакцию - * - * @param name - * @return + * Deletes a file from the storage and redirects the user to the storage page. + * TODO: Add deletion of the record from the database + * TODO: Wrap the operation in a transaction + * не корректно дублирует метод удаления файла по id + * - раняя реализация (устарела) + * - сохранилась в классе для поддержания работоспособности старого кода + * + * @param name the name of the file to be deleted + * @return a redirect to the storage page */ @GetMapping("/storage/delete/{name}") public String deleteFromStorage(@PathVariable String name) { + // Prepare the URL for the storage service String filename = name; String prefix = "http://storage-rs:8282/api/document/"; String postfix = "/delete"; @@ -122,70 +148,69 @@ public class GatesController { try { uri = new URI(prefix + filename + postfix); + // Send a DELETE request to the storage service client.method(HttpMethod.DELETE) .uri(uri) .retrieve() .bodyToMono(new ParameterizedTypeReference <>(){}) .block(); } catch (URISyntaxException e) { - System.out.println("Не верный URI: " + e.getMessage()); + // Print an error message if the URI is invalid + System.out.println("Invalid URI: " + e.getMessage()); } + + // Redirect the user to the storage page return "redirect:/storage"; } - @GetMapping("/document/list") - public String getMethodName(Model model) { - List docs = client.method(HttpMethod.GET) - .uri("http://resource-service-api:8181/storage-entry/list") - .retrieve() - .bodyToMono(new ParameterizedTypeReference >(){}) - .block(); - model.addAttribute("documents", docs); - return "documents"; - } - + /** + * Удаление файла из файлового хранилища. + * Удаление сведений о файле из базы данных. + * Направление пользователя на страницу работы со списком файлов. + * + * @param id the ID of the file to be deleted + * @return a redirect to the list of files + */ @GetMapping("/document/delete/{id}") public String deleteFromDatabase(@PathVariable String id) { - System.out.println("gates# получение сведений о файле ... " + id); - /** - * Получеие сведений о файле из базы - */ + // Get the details of the file from the database + System.out.println("gates# Getting details of the file ... " + id); Document doc = client.method(HttpMethod.GET) - .uri("http://resource-service-api:8181/storage-entry/" + id) - .retrieve() - .bodyToMono(new ParameterizedTypeReference (){}) - .block(); - - System.out.println("Документ для удаления: " + doc.toString()); - System.out.println("Удаление из хранилища ..."); + .uri("http://resource-service-api:8181/storage-entry/" + id) + .retrieve() + .bodyToMono(new ParameterizedTypeReference (){}) + .block(); - /** - * Удаление файла из хранилища - */ - client.delete() - .uri("http://storage-rs:8282/api/document/delete/" - + id - + "." - + doc.getExtension()) - .retrieve() - .bodyToMono(String.class) - .timeout(Duration.ofSeconds(1)) - .block(); + System.out.println("Document to be deleted: " + doc.toString()); + System.out.println("Deleting from storage ..."); + // Delete the file from the storage + String filename = id + "." + doc.getExtension(); + String prefix = "http://storage-rs:8282/api/document/"; + String postfix = "/delete"; + URI uri; + try { + uri = new URI(prefix + filename + postfix); + client.method(HttpMethod.DELETE) + .uri(uri) + .retrieve() + .bodyToMono(new ParameterizedTypeReference <>(){}) + .block(); + } catch (URISyntaxException e) { + System.out.println("Invalid URI: " + e.getMessage()); + } - System.out.println("Удаление из базы ..."); - /** - * Удаление записи о файле из базы - */ + System.out.println("Deleting from the database ..."); + // Delete the entry for the file from the database client.delete() - .uri("http://resource-service-api:8181/storage-entry/delete/" + id) - .retrieve() - .bodyToMono(String.class) - .timeout(Duration.ofSeconds(1)) - .block(); + .uri("http://resource-service-api:8181/storage-entry/delete/" + id) + .retrieve() + .bodyToMono(String.class) + .timeout(Duration.ofSeconds(1)) + .block(); + + System.out.println("File successfully deleted!"); - System.out.println("Файл успешно удален!"); - return "redirect:/document/list"; } @@ -202,19 +227,14 @@ public class GatesController { Document doc = new Document(); doc.setName(file.getOriginalFilename()); doc.setSize(file.getSize()); - /** - * Hfcibhtybt - */ + Optional ext = Optional.ofNullable(file.getOriginalFilename()) .filter(f -> f.contains(".")) .map(f -> f.substring(file.getOriginalFilename().lastIndexOf(".") + 1)); doc.setExtension(ext.get()); doc.setExtension( ext.get()); - // doc.setPath(); - - /** - * Добавление записи о файле в базу данных - */ + + // Добавление записи о файле в базу данных doc = client.post() .uri("http://resource-service-api:8181/storage-entry/create") .body(Mono.just(doc), Document.class) @@ -223,9 +243,7 @@ public class GatesController { .timeout(Duration.ofSeconds(1)) .block(); - /** - * Добавление файла в файловое хранилище - */ + // Добавление файла в файловое хранилище MultipartBodyBuilder builder = new MultipartBodyBuilder(); Boolean ok; MultipartFile out = new CustomMultipartFile(file, doc.getId()+"." + doc.getExtension()); diff --git a/gates/src/main/resources/static/content/md/hello.md b/gates/src/main/resources/static/content/md/hello.md index d36e840..8e9a4b1 100644 --- a/gates/src/main/resources/static/content/md/hello.md +++ b/gates/src/main/resources/static/content/md/hello.md @@ -1,2 +1,36 @@ # gates -сервис для экспорта данных из файлов в базу \ No newline at end of file +сервис для экспорта данных из файлов в базу + +# view + +## [GET# /document/list](http://localhost:83/document/list) +Получение из базы данных сведений о документах, размещенных в файловом хранилище. +Передача списка в представление для пользователя. +Возврат пользователю шаблона списка документов для работы пользователя с документами. + +## /storage + +## /storage/upload +* Отправка файла в хранилище и сведений о нем в базу +* - добавление метаданных файла в базу +* - получение id файла +* - отправка файла с новым именем в хранилище +* Возвращение ползователю обновленной страницы списка файлов + + +## /storage/delete/{name} +Метод не корректно дублирует /document/delete/{id} +Удаление файла из файлового хранилища. Сведения о файле в базе данных сохраняются +* TODO: Add deletion of the record from the database +* TODO: Wrap the operation in a transaction + +## /document/delete/{id} +Удаление файла из файлового хранилища. +Удаление сведений о файле из базы данных. +Направление пользователя на страницу работы со списком файлов. + +## POST# /document/upload +Загрузка файла на сервер + +## /document/view-xlsx/{id} +Просмотр xlsx-файла \ No newline at end of file