Skip to content

Commit

Permalink
Merge pull request #609 from spacious-team/task-gh-498_openapi_respon…
Browse files Browse the repository at this point in the history
…se_codes

Добавить HTTP коды в документацию OpenAPI
  • Loading branch information
vananiev authored Sep 2, 2024
2 parents 00a278a + 96c907d commit a25abfd
Show file tree
Hide file tree
Showing 15 changed files with 346 additions and 99 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
Expand Down
18 changes: 14 additions & 4 deletions src/main/java/ru/investbook/api/CashFlowTypeRestController.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.spacious_team.broker.pojo.CashFlowType;
Expand All @@ -32,7 +36,6 @@
import ru.investbook.repository.CashFlowTypeRepository;

import java.util.Optional;
import java.util.stream.Collectors;

@RestController
@RequiredArgsConstructor
Expand All @@ -44,16 +47,23 @@ public class CashFlowTypeRestController {
private final CashFlowTypeConverter cashFlowTypeConverter;

@GetMapping
@Operation(summary = "Отобразить все")
@Operation(summary = "Отобразить все",
responses = {
@ApiResponse(responseCode = "200", content = @Content(
array = @ArraySchema(schema = @Schema(implementation = CashFlowType.class)))),
@ApiResponse(responseCode = "500", content = @Content)})
public Iterable<CashFlowType> getCashFlowType() {
return cashFlowTypeRepository.findAll()
.stream()
.map(cashFlowTypeConverter::fromEntity)
.collect(Collectors.toList());
.toList();
}

@GetMapping("{id}")
@Operation(summary = "Отобразить по идентификатору")
@Operation(summary = "Отобразить по идентификатору",
responses = {
@ApiResponse(responseCode = "200"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<CashFlowType> getCashFlowType(@PathVariable("id")
@Parameter(description = "Идентификатор типа")
Integer id) {
Expand Down
31 changes: 24 additions & 7 deletions src/main/java/ru/investbook/api/EventCashFlowRestController.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.headers.Header;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.spacious_team.broker.pojo.EventCashFlow;
Expand All @@ -39,6 +42,8 @@
import ru.investbook.converter.EntityConverter;
import ru.investbook.entity.EventCashFlowEntity;

import static org.springframework.http.HttpHeaders.LOCATION;

@RestController
@Tag(name = "Движения ДС по счету", description = """
Ввод, вывод ДС, налоги, комиссии, а также дивиденды, купоны, амортизации по бумагам другого счета
Expand All @@ -54,15 +59,19 @@ public EventCashFlowRestController(JpaRepository<EventCashFlowEntity, Integer> r
@Override
@GetMapping
@PageableAsQueryParam
@Operation(summary = "Отобразить все", description = "Отображает все выплаты по всем счетам")
@Operation(summary = "Отобразить все", description = "Отображает все выплаты по всем счетам", responses = {
@ApiResponse(responseCode = "200"),
@ApiResponse(responseCode = "500", content = @Content)})
public Page<EventCashFlow> get(@Parameter(hidden = true)
Pageable pageable) {
return super.get(pageable);
}

@Override
@GetMapping("{id}")
@Operation(summary = "Отобразить одну", description = "Отобразить выплату по ее номеру")
@Operation(summary = "Отобразить одну", description = "Отобразить выплату по ее номеру", responses = {
@ApiResponse(responseCode = "200"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<EventCashFlow> get(@PathVariable("id")
@Parameter(description = "Номер события")
Integer id) {
Expand All @@ -71,14 +80,20 @@ public ResponseEntity<EventCashFlow> get(@PathVariable("id")

@Override
@PostMapping
@Operation(summary = "Добавить", description = "Сохранить информацию в БД")
@Operation(summary = "Добавить", description = "Сохранить информацию", responses = {
@ApiResponse(responseCode = "201", headers = @Header(name = LOCATION)),
@ApiResponse(responseCode = "409"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Void> post(@Valid @RequestBody EventCashFlow event) {
return super.post(event);
}

@Override
@PutMapping("{id}")
@Operation(summary = "Изменить", description = "Модифицировать информацию в БД")
@Operation(summary = "Обновить", description = "Модифицировать информацию", responses = {
@ApiResponse(responseCode = "201", headers = @Header(name = LOCATION)),
@ApiResponse(responseCode = "204"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Void> put(@PathVariable("id")
@Parameter(description = "Номер события")
Integer id,
Expand All @@ -90,10 +105,12 @@ public ResponseEntity<Void> put(@PathVariable("id")

@Override
@DeleteMapping("{id}")
@Operation(summary = "Удалить", description = "Удалить информацию из БД")
@Operation(summary = "Удалить", description = "Удалить информацию из БД", responses = {
@ApiResponse(responseCode = "204"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Void> delete(@PathVariable("id")
@Parameter(description = "Номер события")
Integer id) {
@Parameter(description = "Номер события")
Integer id) {
return super.delete(id);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.headers.Header;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.SneakyThrows;
Expand Down Expand Up @@ -48,6 +51,8 @@
import java.util.List;
import java.util.stream.Collectors;

import static org.springframework.http.HttpHeaders.LOCATION;

@RestController
@Tag(name = "Официальные обменные курсы", description = "История обменных курсов валют")
@RequestMapping("/api/v1/foreign-exchange-rates")
Expand All @@ -68,15 +73,21 @@ public ForeignExchangeRateRestController(ForeignExchangeRateRepository repositor
@Override
@GetMapping
@PageableAsQueryParam
@Operation(summary = "Отобразить все", description = "Отображает все загруженные в БД информацию по обменным курсам")
@Operation(summary = "Отобразить все", description = "Отображает всю имеющуюся информацию по обменным курсам",
responses = {
@ApiResponse(responseCode = "200"),
@ApiResponse(responseCode = "500", content = @Content)})
public Page<ForeignExchangeRate> get(@Parameter(hidden = true)
Pageable pageable) {
return super.get(pageable);
}

@GetMapping("/currency-pairs/{currency-pair}")
@Operation(summary = "Отобразить по валюте",
description = "Отображает всю загруженные в БД информацию по обменному курсу одной валюте")
description = "Отображает всю имеющуюся информацию по обменному курсу заданной валютной пары",
responses = {
@ApiResponse(responseCode = "200"),
@ApiResponse(responseCode = "500", content = @Content)})
protected List<ForeignExchangeRate> get(@PathVariable("currency-pair")
@Parameter(description = "Валютная пара")
String currencyPair) {
Expand All @@ -90,7 +101,9 @@ protected List<ForeignExchangeRate> get(@PathVariable("currency-pair")
* see {@link AbstractRestController#get(Object)}
*/
@GetMapping("/currency-pairs/{currency-pair}/dates/{date}")
@Operation(summary = "Отобразить по валюте и дате")
@Operation(summary = "Отобразить по валюте и дате", responses = {
@ApiResponse(responseCode = "200"),
@ApiResponse(responseCode = "500", content = @Content)})
protected ResponseEntity<ForeignExchangeRate> get(@PathVariable("currency-pair")
@Parameter(description = "Валютная пара", example = "USDRUB")
String currencyPair,
Expand All @@ -103,7 +116,10 @@ protected ResponseEntity<ForeignExchangeRate> get(@PathVariable("currency-pair")

@Override
@PostMapping
@Operation(summary = "Добавить")
@Operation(summary = "Добавить", responses = {
@ApiResponse(responseCode = "201", headers = @Header(name = LOCATION)),
@ApiResponse(responseCode = "409"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Void> post(@Valid @RequestBody ForeignExchangeRate object) {
foreignExchangeRateService.invalidateCache();
return super.post(object);
Expand All @@ -113,7 +129,11 @@ public ResponseEntity<Void> post(@Valid @RequestBody ForeignExchangeRate object)
* see {@link AbstractRestController#put(Object, Object)}
*/
@PutMapping("/currency-pairs/{currency-pair}/dates/{date}")
@Operation(summary = "Обновить", description = "Обновляет информацию о курсе валюты за заданную дату")
@Operation(summary = "Обновить", description = "Обновляет информацию о курсе валюты за заданную дату",
responses = {
@ApiResponse(responseCode = "201", headers = @Header(name = LOCATION)),
@ApiResponse(responseCode = "204"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Void> put(@PathVariable("currency-pair")
@Parameter(description = "Валютная пара", example = "USDRUB")
String currencyPair,
Expand All @@ -132,14 +152,17 @@ public ResponseEntity<Void> put(@PathVariable("currency-pair")
* see {@link AbstractRestController#delete(Object)}
*/
@DeleteMapping("/currency-pairs/{currency-pair}/dates/{date}")
@Operation(summary = "Удалить", description = "Удаляет информацию о курсе из БД")
@Operation(summary = "Удалить", description = "Удаляет информацию о курсе из БД",
responses = {
@ApiResponse(responseCode = "204"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Void> delete(@PathVariable("currency-pair")
@Parameter(description = "Валютная пара", example = "USDRUB")
String currencyPair,
@PathVariable("date")
@Parameter(description = "Дата", example = "2021-01-23")
@DateTimeFormat(pattern = "yyyy-MM-dd")
LocalDate date) {
@Parameter(description = "Валютная пара", example = "USDRUB")
String currencyPair,
@PathVariable("date")
@Parameter(description = "Дата", example = "2021-01-23")
@DateTimeFormat(pattern = "yyyy-MM-dd")
LocalDate date) {
foreignExchangeRateService.invalidateCache();
return super.delete(getId(currencyPair, date));
}
Expand Down
33 changes: 26 additions & 7 deletions src/main/java/ru/investbook/api/IssuerRestController.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.headers.Header;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.spacious_team.broker.pojo.Issuer;
Expand All @@ -39,6 +42,8 @@
import ru.investbook.converter.EntityConverter;
import ru.investbook.entity.IssuerEntity;

import static org.springframework.http.HttpHeaders.LOCATION;

@RestController
@Tag(name = "Эмитенты", description = "Информация об эмитентах")
@RequestMapping("/api/v1/issuers")
Expand All @@ -51,15 +56,21 @@ public IssuerRestController(JpaRepository<IssuerEntity, Integer> repository, Ent
@Override
@GetMapping
@PageableAsQueryParam
@Operation(summary = "Отобразить всех")
@Operation(summary = "Отобразить всех",
responses = {
@ApiResponse(responseCode = "200"),
@ApiResponse(responseCode = "500", content = @Content)})
public Page<Issuer> get(@Parameter(hidden = true)
Pageable pageable) {
return super.get(pageable);
}

@Override
@GetMapping("{id}")
@Operation(summary = "Отобразить одного", description = "Отобразить информацию об эмитенте по его номеру")
@Operation(summary = "Отобразить одного", description = "Отобразить информацию об эмитенте по его номеру",
responses = {
@ApiResponse(responseCode = "200"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Issuer> get(@PathVariable("id")
@Parameter(description = "Внутренний идентификатор эмитента")
Integer id) {
Expand All @@ -68,14 +79,20 @@ public ResponseEntity<Issuer> get(@PathVariable("id")

@Override
@PostMapping
@Operation(summary = "Добавить")
@Operation(summary = "Добавить", responses = {
@ApiResponse(responseCode = "201", headers = @Header(name = LOCATION)),
@ApiResponse(responseCode = "409"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Void> post(@Valid @RequestBody Issuer issuer) {
return super.post(issuer);
}

@Override
@PutMapping("{id}")
@Operation(summary = "Обновить сведения")
@Operation(summary = "Обновить сведения", responses = {
@ApiResponse(responseCode = "201", headers = @Header(name = LOCATION)),
@ApiResponse(responseCode = "204"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Void> put(@PathVariable("id")
@Parameter(description = "Внутренний идентификатор эмитента")
Integer id,
Expand All @@ -87,10 +104,12 @@ public ResponseEntity<Void> put(@PathVariable("id")

@Override
@DeleteMapping("{id}")
@Operation(summary = "Удалить", description = "Удаляет сведения об эмитенте из БД")
@Operation(summary = "Удалить", description = "Удаляет сведения об эмитенте из БД", responses = {
@ApiResponse(responseCode = "204"),
@ApiResponse(responseCode = "500", content = @Content)})
public ResponseEntity<Void> delete(@PathVariable("id")
@Parameter(description = "Внутренний идентификатор эмитента")
Integer id) {
@Parameter(description = "Внутренний идентификатор эмитента")
Integer id) {
return super.delete(id);
}

Expand Down
Loading

0 comments on commit a25abfd

Please sign in to comment.