diff --git a/codiki-application/src/main/java/org/codiki/application/publication/PublicationUseCases.java b/codiki-application/src/main/java/org/codiki/application/publication/PublicationUseCases.java index bb6ad60..33a58b1 100644 --- a/codiki-application/src/main/java/org/codiki/application/publication/PublicationUseCases.java +++ b/codiki-application/src/main/java/org/codiki/application/publication/PublicationUseCases.java @@ -3,6 +3,7 @@ package org.codiki.application.publication; import static java.util.Objects.isNull; import java.time.Clock; import java.time.ZonedDateTime; +import java.util.Optional; import java.util.UUID; import static org.codiki.domain.publication.model.builder.AuthorBuilder.anAuthor; @@ -153,4 +154,8 @@ public class PublicationUseCases { publicationPort.delete(publicationToDelete); } + + public Optional findById(UUID publicationId) { + return publicationPort.findById(publicationId); + } } diff --git a/codiki-exposition/src/main/java/org/codiki/exposition/configuration/security/SecurityConfiguration.java b/codiki-exposition/src/main/java/org/codiki/exposition/configuration/security/SecurityConfiguration.java index 40e93f7..d475c37 100644 --- a/codiki-exposition/src/main/java/org/codiki/exposition/configuration/security/SecurityConfiguration.java +++ b/codiki-exposition/src/main/java/org/codiki/exposition/configuration/security/SecurityConfiguration.java @@ -46,6 +46,7 @@ public class SecurityConfiguration { "/api/health/check", "/api/categories", "/api/pictures/{pictureId}", + "/api/publications/{publicationId}", "/error" ).permitAll() .requestMatchers( diff --git a/codiki-exposition/src/main/java/org/codiki/exposition/publication/PublicationController.java b/codiki-exposition/src/main/java/org/codiki/exposition/publication/PublicationController.java index 216bbe7..a952727 100644 --- a/codiki-exposition/src/main/java/org/codiki/exposition/publication/PublicationController.java +++ b/codiki-exposition/src/main/java/org/codiki/exposition/publication/PublicationController.java @@ -5,11 +5,13 @@ import java.util.UUID; import static org.springframework.http.HttpStatus.CREATED; import static org.springframework.http.HttpStatus.NO_CONTENT; import org.codiki.application.publication.PublicationUseCases; +import org.codiki.domain.publication.exception.PublicationNotFoundException; import org.codiki.domain.publication.model.Publication; import org.codiki.domain.publication.model.PublicationEditionRequest; +import org.codiki.exposition.publication.model.PublicationDto; import org.codiki.exposition.publication.model.PublicationEditionRequestDto; -import org.springframework.http.HttpStatus; 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.PutMapping; @@ -27,6 +29,13 @@ public class PublicationController { this.publicationUseCases = publicationUseCases; } + @GetMapping("/{publicationId}") + public PublicationDto getById(@PathVariable("publicationId") UUID publicationId) { + return publicationUseCases.findById(publicationId) + .map(PublicationDto::new) + .orElseThrow(() -> new PublicationNotFoundException(publicationId)); + } + @PostMapping @ResponseStatus(CREATED) public PublicationDto createPublication(@RequestBody PublicationEditionRequestDto requestDto) { diff --git a/codiki-exposition/src/main/java/org/codiki/exposition/publication/PublicationDto.java b/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationDto.java similarity index 89% rename from codiki-exposition/src/main/java/org/codiki/exposition/publication/PublicationDto.java rename to codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationDto.java index adf6e7d..4d2c103 100644 --- a/codiki-exposition/src/main/java/org/codiki/exposition/publication/PublicationDto.java +++ b/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationDto.java @@ -1,11 +1,10 @@ -package org.codiki.exposition.publication; +package org.codiki.exposition.publication.model; import java.time.ZonedDateTime; import java.util.UUID; import org.codiki.domain.publication.model.Publication; import org.codiki.exposition.category.model.CategoryDto; -import org.codiki.exposition.publication.model.AuthorDto; public record PublicationDto( UUID id, diff --git a/rest-client-collection/Codiki/environments/localhost.bru b/rest-client-collection/Codiki/environments/localhost.bru index 20e5a2c..67c21eb 100644 --- a/rest-client-collection/Codiki/environments/localhost.bru +++ b/rest-client-collection/Codiki/environments/localhost.bru @@ -1,6 +1,6 @@ vars { url: http://localhost:8080 - publicationId: fce1de27-11c6-4deb-a248-b63288c00037 + publicationId: e23831a6-9cc0-4f3d-9efa-7a1cae191cb1 bearerToken: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1YWQ0NjJiOC04ZjllLTRhMjYtYmI4Ni1jNzRmZWY1ZDExYjYiLCJleHAiOjE3MTA0MDc5Mjd9.QdanZXjfLztIVJU-pRS3gZxnC4GIycyhmlCkhYSPchiXpeNzruw_GY3fH1_qshC_AjOCSqGmCq3X1S_zVFdodQ categoryId: 172fa901-3f4b-4540-92f3-1c15820e8ec9 pictureId: 65b660b7-66bb-4e4a-a62c-fd0ca101f972