From 5fd23c11c17678dc0927ef070153512739eaa1ca Mon Sep 17 00:00:00 2001 From: esoe Date: Mon, 13 May 2024 15:54:22 +0300 Subject: [PATCH] Building api --- .../controllers/BuildingController.java | 77 +++++++++++++++++++ .../resourceserviceapi/entities/Building.java | 36 +++++++++ .../repositories/BuildingFace.java | 14 ++++ .../main/resources/static/content/md/hello.md | 52 ++++++++----- 4 files changed, 161 insertions(+), 18 deletions(-) create mode 100644 resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/controllers/BuildingController.java create mode 100644 resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/entities/Building.java create mode 100644 resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/repositories/BuildingFace.java diff --git a/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/controllers/BuildingController.java b/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/controllers/BuildingController.java new file mode 100644 index 0000000..79e939d --- /dev/null +++ b/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/controllers/BuildingController.java @@ -0,0 +1,77 @@ +package ru.molokoin.resourceserviceapi.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import ru.molokoin.resourceserviceapi.entities.Building; +import ru.molokoin.resourceserviceapi.repositories.BuildingFace; + +@RestController +@RequestMapping(path = "/", consumes = {"*/*"}) +public class BuildingController { + @Autowired + private BuildingFace repo; + + /** + * Получение перечня объектов строительства + * @return + */ + @GetMapping("/building/list") + public ResponseEntity> getBuildings(){ + return new ResponseEntity<>(repo.findAll(), HttpStatus.OK); + } + + /** + * Получение сведений по объекту строительства + * @param id + * @return + */ + @GetMapping("/building/{id}") + public ResponseEntity getBuildingByID(@PathVariable Integer id){ + return new ResponseEntity<>(repo.findBuildingById(id), HttpStatus.OK); + } + + /** + * Создание запис о новом объекте строительства + * @param building + * @return + */ + @PostMapping(path = "/building/create", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity saveBuilding(@RequestBody Building building) { + repo.save(building); + return new ResponseEntity<>(building, HttpStatus.CREATED); + } + + @PostMapping(path = "/building/update/{id}", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBuilding(@PathVariable Integer id, @RequestBody Building building) { + Building b = repo.findBuildingById(id); + b.setName_full(building.getName_full()); + b.setName_short(building.getName_short()); + b.setCode_full(building.getCode_full()); + b.setCode_short(building.getCode_short()); + repo.save(b); + return new ResponseEntity<>(repo.findBuildingById(id), HttpStatus.CREATED); + } + + @DeleteMapping("/building/delete/{id}") + public ResponseEntity deleteBuilding(@PathVariable Long id){ + Building b = repo.findBuildingById(id); + repo.delete(b); + return new ResponseEntity<>("Запись id#" + id + " удалена ... ", HttpStatus.OK); + } +} diff --git a/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/entities/Building.java b/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/entities/Building.java new file mode 100644 index 0000000..1e64de9 --- /dev/null +++ b/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/entities/Building.java @@ -0,0 +1,36 @@ +package ru.molokoin.resourceserviceapi.entities; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Сущность объекта строительства + */ +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Data +public class Building { + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + private long id; + @Column(length=50) + private String name_short;//Сокращенное наименование + private String name_full;//Полное наименование + private String code_short;//Краткий код + private String code_full;//Полный код + + // подготовить конструкторы на все варианты внесения информации о преподавателях + public Building(String name_short, String name_full, String code_short, String code_full){ + this.name_short = name_short; + this.name_full = name_full; + this.code_short = code_short; + this.code_full = code_full; + } +} diff --git a/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/repositories/BuildingFace.java b/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/repositories/BuildingFace.java new file mode 100644 index 0000000..7a91edf --- /dev/null +++ b/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/repositories/BuildingFace.java @@ -0,0 +1,14 @@ +package ru.molokoin.resourceserviceapi.repositories; + +import java.util.List; + +import org.springframework.data.repository.ListCrudRepository; +import org.springframework.stereotype.Repository; + +import ru.molokoin.resourceserviceapi.entities.Building; + +@Repository +public interface BuildingFace extends ListCrudRepository{ + List findAll(); + Building findBuildingById(long id); +} diff --git a/resource-service-api/src/main/resources/static/content/md/hello.md b/resource-service-api/src/main/resources/static/content/md/hello.md index bb4bf59..efa7961 100644 --- a/resource-service-api/src/main/resources/static/content/md/hello.md +++ b/resource-service-api/src/main/resources/static/content/md/hello.md @@ -1,10 +1,10 @@ -# RESOURCE-SERVICE-API : HELLO.MD +# 1. RESOURCE-SERVICE-API : HELLO.MD -# Описание api -## domain:port/hello +# 2. Описание api +## 2.1. domain:port/hello Возвращает текущую страницу описания сервиса -## domain:port/content/* +## 2.2. domain:port/content/* статический контент сервиса, вспомогательные файлы для оформления или наполнения страниц например: @@ -12,55 +12,71 @@ - /md/* - /прочие папки и файлы ... -## Управление данными преподавателей -### domain:port/teacher/list +## 2.3. Управление данными преподавателей +### GET:domain:port/teacher/list Возвращает json файл с данными преподавателей -### domain:port/teacher/{id} +### GET:domain:port/teacher/{id} Возвращает json файл с данными одного преподавателя -### domain:port/teacher/save +### POST:domain:port/teacher/save Добавляет запись о новом преподавателе Возвращает json файл с данными добавленного преподавателя -### domain:port/teacher/update/{id} +### PUT:domain:port/teacher/update/{id} Обновляет запись о преподавателе по id Возвращает json файл с обновленными данными преподавателя -### domain:port/teacher/delete/{id} +### DELETE:domain:port/teacher/delete/{id} Удаляет запись о преподавателе по id Возвращает текстовое сообщение с результатами выполнения операции -## Управление Критериями программ обучения +## 2.4. Управление Критериями программ обучения Таблица: program_cretareas Поля таблицы: - id (идентификатор); - name (наименование категории программы обучения); - name_short (сокращенное наименование категории программы обучения). -### domain:port/program-cretareas +### GET:domain:port/cretarea/list Возвращает json файл с данными о критериях -### domain:port/program-cretarea/{id} +### GET:domain:port/cretarea/{id} Возвращает json файл с данными одного критерия -### domain:port/program-cretarea/save +### POST:domain:port/cretarea/save Добавляет запись о новом критерии программы обучения Возвращает json файл с данными добавленного критерия -### domain:port/program-cretarea/update/{id} +### PUT:domain:port/cretarea/update/{id} Обновляет запись о критерии программы обучения по id Возвращает json файл с обновленными данными о критерии прогрммы обучения -### domain:port/program-cretarea/delete/{id} +### DELETE:domain:port/cretarea/delete/{id} Удаляет запись о критерии программы обучения по id Возвращает текстовое сообщение с результатами выполнения операции -# Структура базы данных сервиса : SCHEME +## 2.5. Управление программами обучения +### GET:domain:port/program/list + Получение сведений обо всех программах обучения в json-формате + +### GET:domain:port/program/{id} + Получение сведений о программе в json-формате + +### POST:domain:port/program/create + Создание записи о новой программе + +### PUT:domain:port/program/update/{id} + Обновление сведений о программе + +### DELETE:domain:port/program/delete/{id} + Удаление сведений о программе + +# 3. Структура базы данных сервиса : SCHEME ![image entity relationship diagram](content/images/ERD.svg "entity relationship diagram") -## Памятка +# 4. Памятка 1. Предусмотреть возможность внесения сведений об обучении по курсу "Охрана труда, пункт В" (отВ): - одна программа предполагает наличие от 7-ми до 9-ти записей в реестре - нет возможности по реестру понять, какие в итоге подпункты были включены в протокол