diff --git a/pom.xml b/pom.xml index 7431833..d716a75 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,6 @@ 3.5.4 - 2.5.0 1.2.1 @@ -63,11 +62,6 @@ lombok provided - - org.springdoc - springdoc-openapi-starter-webmvc-ui - ${openapi.version} - diff --git a/readme.md b/readme.md index f2ce86f..e4c4278 100644 --- a/readme.md +++ b/readme.md @@ -79,6 +79,7 @@ Prosty mikroserwis stworzony na potrzeby rekrutacji "type": "string" }, "currencies": { + "$comment": "TODO: Map -> List", "type": "array", "items": { "$ref": "#/def/currency" diff --git a/src/main/java/eu/ztsh/wymiana/util/UserMapper.java b/src/main/java/eu/ztsh/wymiana/util/UserMapper.java index 31c2a20..09ad887 100644 --- a/src/main/java/eu/ztsh/wymiana/util/UserMapper.java +++ b/src/main/java/eu/ztsh/wymiana/util/UserMapper.java @@ -4,7 +4,6 @@ import eu.ztsh.wymiana.data.entity.CurrencyEntity; import eu.ztsh.wymiana.data.entity.UserEntity; import eu.ztsh.wymiana.model.User; import eu.ztsh.wymiana.model.UserCreateRequestConfiguredWrapper; -import eu.ztsh.wymiana.web.model.UserResponse; import java.util.List; @@ -20,10 +19,6 @@ public class UserMapper { CurrencyMapper.pojoMapToEntities(pojo.currencies(), pojo.pesel())); } - public static UserResponse pojoToResponse(User pojo) { - return new UserResponse(pojo.name(), pojo.surname(), pojo.pesel(), pojo.currencies().values().stream().toList()); - } - public static UserEntity requestToEntity(UserCreateRequestConfiguredWrapper request) { return new UserEntity(request.pesel(), request.name(), request.surname(), List.of(new CurrencyEntity(request.pesel(), request.initialSymbol(), request.initial()))); diff --git a/src/main/java/eu/ztsh/wymiana/web/controller/ExchangeController.java b/src/main/java/eu/ztsh/wymiana/web/controller/ExchangeController.java index 39c635d..fb0ee13 100644 --- a/src/main/java/eu/ztsh/wymiana/web/controller/ExchangeController.java +++ b/src/main/java/eu/ztsh/wymiana/web/controller/ExchangeController.java @@ -4,16 +4,9 @@ import eu.ztsh.wymiana.exception.InsufficientFundsException; import eu.ztsh.wymiana.exception.UserNotFoundException; import eu.ztsh.wymiana.service.CurrencyService; import eu.ztsh.wymiana.web.model.CurrencyExchangeRequest; -import eu.ztsh.wymiana.web.model.UserResponse; -import io.swagger.v3.oas.annotations.Operation; -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.responses.ApiResponses; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -29,22 +22,6 @@ public class ExchangeController { private final CurrencyService currencyService; - @Operation(summary = "Perform exchange") - @ApiResponses(value = { - @ApiResponse(responseCode = "200", - description = "Exchange performed successfully", - content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, - schema = @Schema(implementation = UserResponse.class))), - @ApiResponse(responseCode = "400", - description = "Insufficient funds", - content = @Content(mediaType = MediaType.TEXT_PLAIN_VALUE)), - @ApiResponse(responseCode = "404", - description = "User not found", - content = @Content(mediaType = MediaType.TEXT_PLAIN_VALUE)), - @ApiResponse(responseCode = "500", - description = "Another error has occurred", - content = @Content(mediaType = MediaType.TEXT_PLAIN_VALUE)) - }) @PostMapping public ResponseEntity exchange(@Valid @RequestBody CurrencyExchangeRequest request) { try { diff --git a/src/main/java/eu/ztsh/wymiana/web/controller/UserController.java b/src/main/java/eu/ztsh/wymiana/web/controller/UserController.java index dfa40b6..bca74ce 100644 --- a/src/main/java/eu/ztsh/wymiana/web/controller/UserController.java +++ b/src/main/java/eu/ztsh/wymiana/web/controller/UserController.java @@ -2,21 +2,14 @@ package eu.ztsh.wymiana.web.controller; import eu.ztsh.wymiana.exception.UserAlreadyExistsException; import eu.ztsh.wymiana.exception.UserNotFoundException; +import eu.ztsh.wymiana.model.User; import eu.ztsh.wymiana.service.UserService; -import eu.ztsh.wymiana.util.UserMapper; import eu.ztsh.wymiana.validation.ValidationFailedException; import eu.ztsh.wymiana.web.model.UserCreateRequest; -import eu.ztsh.wymiana.web.model.UserResponse; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; -import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.ValidationException; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -30,23 +23,14 @@ import org.springframework.web.bind.annotation.RestController; @Validated @RestController @RequestMapping(path = "/api/user", produces = "application/json") -@Tag(name="User management", description = "Create or get user") public class UserController { private final UserService userService; - @Operation(summary = "Get user by PESEL") - @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "User found"), - @ApiResponse(responseCode = "400", description = "Request not valid", content = @Content), - @ApiResponse(responseCode = "404", description = "User not found", content = @Content), - @ApiResponse(responseCode = "500", description = "Another error has occurred", content = @Content) - }) @GetMapping("{pesel}") - public ResponseEntity get(@PathVariable("pesel") String pesel) { + public ResponseEntity get(@PathVariable("pesel") String pesel) { try { return userService.get(pesel) - .map(UserMapper::pojoToResponse) .map(ResponseEntity::ok) .orElseThrow(() -> new UserNotFoundException(pesel)); } catch (Exception e) { @@ -58,13 +42,6 @@ public class UserController { } } - @Operation(summary = "Create user") - @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "User created", content = @Content), - @ApiResponse(responseCode = "400", description = "Request not valid", content = @Content(mediaType = MediaType.TEXT_PLAIN_VALUE)), - @ApiResponse(responseCode = "409", description = "User already exists", content = @Content(mediaType = MediaType.TEXT_PLAIN_VALUE)), - @ApiResponse(responseCode = "500", description = "Another error has occurred", content = @Content(mediaType = MediaType.TEXT_PLAIN_VALUE)) - }) @PostMapping public ResponseEntity create(@Valid @RequestBody UserCreateRequest request) { try { diff --git a/src/main/java/eu/ztsh/wymiana/web/model/CurrencyExchangeRequest.java b/src/main/java/eu/ztsh/wymiana/web/model/CurrencyExchangeRequest.java index c999dc5..f420134 100644 --- a/src/main/java/eu/ztsh/wymiana/web/model/CurrencyExchangeRequest.java +++ b/src/main/java/eu/ztsh/wymiana/web/model/CurrencyExchangeRequest.java @@ -2,7 +2,6 @@ package eu.ztsh.wymiana.web.model; import eu.ztsh.wymiana.model.Symbol; import eu.ztsh.wymiana.validation.ValidExchangeRequest; -import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotNull; import lombok.Builder; import org.hibernate.validator.constraints.pl.PESEL; @@ -12,11 +11,11 @@ import java.math.BigDecimal; @Builder @ValidExchangeRequest public record CurrencyExchangeRequest( - @NotNull @PESEL String pesel, + @PESEL String pesel, @NotNull Symbol from, @NotNull Symbol to, - @Min(0) BigDecimal toBuy, - @Min(0) BigDecimal toSell + BigDecimal toBuy, + BigDecimal toSell ) { } diff --git a/src/main/java/eu/ztsh/wymiana/web/model/UserCreateRequest.java b/src/main/java/eu/ztsh/wymiana/web/model/UserCreateRequest.java index 0614f6b..cb5de05 100644 --- a/src/main/java/eu/ztsh/wymiana/web/model/UserCreateRequest.java +++ b/src/main/java/eu/ztsh/wymiana/web/model/UserCreateRequest.java @@ -12,7 +12,7 @@ import java.math.BigDecimal; public record UserCreateRequest( @NotNull String name, @NotNull String surname, - @PESEL @Adult @NotNull String pesel, - @NotNull @Min(0) BigDecimal initial) { + @PESEL @Adult String pesel, + @Min(0) BigDecimal initial) { } diff --git a/src/main/java/eu/ztsh/wymiana/web/model/UserResponse.java b/src/main/java/eu/ztsh/wymiana/web/model/UserResponse.java deleted file mode 100644 index 2e73267..0000000 --- a/src/main/java/eu/ztsh/wymiana/web/model/UserResponse.java +++ /dev/null @@ -1,9 +0,0 @@ -package eu.ztsh.wymiana.web.model; - -import eu.ztsh.wymiana.model.Currency; - -import java.util.List; - -public record UserResponse(String name, String surname, String pesel, List currencies) { - -}