Implementation of publication update.

This commit is contained in:
Florian THIERRY
2024-03-12 10:35:27 +01:00
parent 2c6a917cc2
commit 571b005770
21 changed files with 288 additions and 58 deletions

View File

@@ -1,12 +1,17 @@
package org.codiki.exposition.configuration;
import static org.springframework.http.HttpStatus.BAD_REQUEST;
import static org.springframework.http.HttpStatus.FORBIDDEN;
import static org.springframework.http.HttpStatus.NOT_FOUND;
import static org.springframework.http.HttpStatus.UNAUTHORIZED;
import org.codiki.domain.category.exception.CategoryNotFoundException;
import org.codiki.domain.exception.LoginFailureException;
import org.codiki.domain.exception.RefreshTokenDoesNotExistException;
import org.codiki.domain.exception.RefreshTokenExpiredException;
import org.codiki.domain.exception.UserDoesNotExistException;
import org.codiki.domain.publication.exception.PublicationEditionException;
import org.codiki.domain.publication.exception.PublicationNotFoundException;
import org.codiki.domain.publication.exception.PublicationUpdateForbiddenException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
@@ -37,4 +42,28 @@ public class GlobalControllerExceptionHandler {
public void handleRefreshTokenExpiredException() {
// Do nothing.
}
@ResponseStatus(BAD_REQUEST)
@ExceptionHandler(CategoryNotFoundException.class)
public void handleCategoryNotFoundException() {
// Do nothing.
}
@ResponseStatus(BAD_REQUEST)
@ExceptionHandler(PublicationEditionException.class)
public void handlePublicationEditionException() {
// Do nothing.
}
@ResponseStatus(NOT_FOUND)
@ExceptionHandler(PublicationNotFoundException.class)
public void handlePublicationNotFoundException() {
// Do nothing.
}
@ResponseStatus(FORBIDDEN)
@ExceptionHandler(PublicationUpdateForbiddenException.class)
public void handlePublicationUpdateForbiddenException() {
// Do nothing.
}
}

View File

@@ -1,10 +1,14 @@
package org.codiki.exposition.publication;
import java.util.UUID;
import org.codiki.application.publication.PublicationUseCases;
import org.codiki.domain.publication.model.Publication;
import org.codiki.domain.publication.model.PublicationCreationRequest;
import org.codiki.exposition.publication.model.PublicationCreationRequestDto;
import org.codiki.domain.publication.model.PublicationEditionRequest;
import org.codiki.exposition.publication.model.PublicationEditionRequestDto;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -19,9 +23,19 @@ public class PublicationController {
}
@PostMapping
public PublicationDto createPublication(@RequestBody PublicationCreationRequestDto requestDto) {
PublicationCreationRequest request = requestDto.toDomain();
public PublicationDto createPublication(@RequestBody PublicationEditionRequestDto requestDto) {
PublicationEditionRequest request = requestDto.toDomain();
Publication newPublication = publicationUseCases.createPublication(request);
return new PublicationDto(newPublication);
}
@PutMapping("/{publicationId}")
public PublicationDto updatePublication(
@PathVariable("publicationId") UUID publicationId,
@RequestBody PublicationEditionRequestDto requestDto
) {
PublicationEditionRequest request = requestDto.toDomain();
Publication updatedPublication = publicationUseCases.updatePublication(publicationId, request);
return new PublicationDto(updatedPublication);
}
}

View File

@@ -1,17 +0,0 @@
package org.codiki.exposition.publication.model;
import java.util.UUID;
import org.codiki.domain.publication.model.PublicationCreationRequest;
public record PublicationCreationRequestDto(
String title,
String text,
String description,
String image,
UUID categoryId
) {
public PublicationCreationRequest toDomain() {
return new PublicationCreationRequest(title, text, description, image, categoryId);
}
}

View File

@@ -0,0 +1,17 @@
package org.codiki.exposition.publication.model;
import java.util.UUID;
import org.codiki.domain.publication.model.PublicationEditionRequest;
public record PublicationEditionRequestDto(
String title,
String text,
String description,
String image,
UUID categoryId
) {
public PublicationEditionRequest toDomain() {
return new PublicationEditionRequest(title, text, description, image, categoryId);
}
}