From 9fcfc04117eb8a76607320038abb74aa8bee49f0 Mon Sep 17 00:00:00 2001 From: Florian THIERRY Date: Thu, 14 Mar 2024 14:06:16 +0100 Subject: [PATCH] Change category field of publication entity to its id. --- .../category/CategoryUseCases.java | 4 +++ .../publication/PublicationUseCases.java | 20 ++++++------ .../domain/publication/model/Publication.java | 7 ++-- .../model/builder/PublicationBuilder.java | 32 +++++++++---------- .../publication/model/PublicationDto.java | 8 ++--- .../publication/model/PublicationEntity.java | 13 ++++---- .../repository/PublicationRepository.java | 1 - 7 files changed, 43 insertions(+), 42 deletions(-) diff --git a/codiki-application/src/main/java/org/codiki/application/category/CategoryUseCases.java b/codiki-application/src/main/java/org/codiki/application/category/CategoryUseCases.java index 84324c5..cdbc0b3 100644 --- a/codiki-application/src/main/java/org/codiki/application/category/CategoryUseCases.java +++ b/codiki-application/src/main/java/org/codiki/application/category/CategoryUseCases.java @@ -27,6 +27,10 @@ public class CategoryUseCases { return categoryPort.findById(categoryId); } + public boolean existsById(UUID categoryId) { + return categoryPort.existsById(categoryId); + } + public Category createCategory(String name, List subCategoryIds) { if (isNull(name)) { throw new CategoryEditionException("name can not be empty"); 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 afd8e64..106fedc 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 @@ -62,10 +62,11 @@ public class PublicationUseCases { User authenticatedUser = userUseCases.getAuthenticatedUser() .orElseThrow(AuthenticationRequiredException::new); - Category category = categoryUseCases.findById(request.categoryId()) - .orElseThrow(() -> new PublicationEditionException( + if (!categoryUseCases.existsById(request.categoryId())) { + throw new PublicationEditionException( new CategoryNotFoundException(request.categoryId()) - )); + ); + } if (!pictureUseCases.existsById(request.illustrationId())) { throw new PublicationEditionException( @@ -79,10 +80,10 @@ public class PublicationUseCases { .withTitle(request.title()) .withText(request.text()) .withDescription(request.description()) - .withIllustrationId(request.illustrationId()) .withCreationDate(ZonedDateTime.now(clock)) + .withIllustrationId(request.illustrationId()) + .withCategoryId(request.categoryId()) .withAuthor(anAuthor().basedOn(authenticatedUser).build()) - .withCategory(category) .build(); publicationPort.save(newPublication); @@ -127,12 +128,13 @@ public class PublicationUseCases { } if (!isNull(request.categoryId())) { - Category newCategory = categoryUseCases.findById(request.categoryId()) - .orElseThrow(() -> new PublicationEditionException( + if (!categoryUseCases.existsById(request.categoryId())) { + throw new PublicationEditionException( new CategoryNotFoundException(request.categoryId()) - )); + ); + } - publicationBuilder.withCategory(newCategory); + publicationBuilder.withCategoryId(request.categoryId()); } Publication updatedPublication = publicationBuilder.build(); diff --git a/codiki-domain/src/main/java/org/codiki/domain/publication/model/Publication.java b/codiki-domain/src/main/java/org/codiki/domain/publication/model/Publication.java index 92a7339..3ae4d45 100644 --- a/codiki-domain/src/main/java/org/codiki/domain/publication/model/Publication.java +++ b/codiki-domain/src/main/java/org/codiki/domain/publication/model/Publication.java @@ -3,9 +3,6 @@ package org.codiki.domain.publication.model; import java.time.ZonedDateTime; import java.util.UUID; -import org.codiki.domain.category.model.Category; -import org.codiki.domain.picture.model.Picture; - public record Publication( UUID id, String key, @@ -14,7 +11,7 @@ public record Publication( String description, ZonedDateTime creationDate, UUID illustrationId, - Author author, - Category category + UUID categoryId, + Author author ) { } diff --git a/codiki-domain/src/main/java/org/codiki/domain/publication/model/builder/PublicationBuilder.java b/codiki-domain/src/main/java/org/codiki/domain/publication/model/builder/PublicationBuilder.java index 9598af7..e8a1181 100644 --- a/codiki-domain/src/main/java/org/codiki/domain/publication/model/builder/PublicationBuilder.java +++ b/codiki-domain/src/main/java/org/codiki/domain/publication/model/builder/PublicationBuilder.java @@ -13,10 +13,10 @@ public class PublicationBuilder { private String title; private String text; private String description; - private UUID illustrationId; private ZonedDateTime creationDate; + private UUID illustrationId; + private UUID categoryId; private Author author; - private Category category; private PublicationBuilder() {} @@ -31,10 +31,10 @@ public class PublicationBuilder { .withTitle(publication.title()) .withText(publication.text()) .withDescription(publication.description()) - .withIllustrationId(publication.illustrationId()) .withCreationDate(publication.creationDate()) - .withAuthor(publication.author()) - .withCategory(publication.category()); + .withIllustrationId(publication.illustrationId()) + .withCategoryId(publication.categoryId()) + .withAuthor(publication.author()); } public PublicationBuilder withId(UUID id) { @@ -62,23 +62,23 @@ public class PublicationBuilder { return this; } - public PublicationBuilder withIllustrationId(UUID illustrationId) { - this.illustrationId = illustrationId; - return this; - } - public PublicationBuilder withCreationDate(ZonedDateTime creationDate) { this.creationDate = creationDate; return this; } - public PublicationBuilder withAuthor(Author author) { - this.author = author; + public PublicationBuilder withIllustrationId(UUID illustrationId) { + this.illustrationId = illustrationId; return this; } - public PublicationBuilder withCategory(Category category) { - this.category = category; + public PublicationBuilder withCategoryId(UUID categoryId) { + this.categoryId = categoryId; + return this; + } + + public PublicationBuilder withAuthor(Author author) { + this.author = author; return this; } @@ -91,8 +91,8 @@ public class PublicationBuilder { description, creationDate, illustrationId, - author, - category + categoryId, + author ); } } diff --git a/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationDto.java b/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationDto.java index ab20893..9a5a99b 100644 --- a/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationDto.java +++ b/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationDto.java @@ -14,8 +14,8 @@ public record PublicationDto( String description, ZonedDateTime creationDate, UUID illustrationId, - AuthorDto author, - CategoryDto category + UUID categoryId, + AuthorDto author ) { public PublicationDto(Publication publication) { this( @@ -26,8 +26,8 @@ public record PublicationDto( publication.description(), publication.creationDate(), publication.illustrationId(), - new AuthorDto(publication.author()), - new CategoryDto(publication.category()) + publication.categoryId(), + new AuthorDto(publication.author()) ); } } diff --git a/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/model/PublicationEntity.java b/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/model/PublicationEntity.java index d3b2a33..d09f20f 100644 --- a/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/model/PublicationEntity.java +++ b/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/model/PublicationEntity.java @@ -39,12 +39,11 @@ public class PublicationEntity { private ZonedDateTime creationDate; @Column(nullable = false) private UUID illustrationId; + @Column(nullable = false) + private UUID categoryId; @ManyToOne(fetch = LAZY) @JoinColumn(name = "author_id") private AuthorEntity author; - @ManyToOne(fetch = LAZY) - @JoinColumn(name = "category_id") - private CategoryEntity category; public PublicationEntity(Publication publication) { this( @@ -55,8 +54,8 @@ public class PublicationEntity { publication.description(), publication.creationDate(), publication.illustrationId(), - new AuthorEntity(publication.author()), - new CategoryEntity(publication.category()) + publication.categoryId(), + new AuthorEntity(publication.author()) ); } @@ -69,8 +68,8 @@ public class PublicationEntity { description, creationDate, illustrationId, - author.toDomain(), - category.toDomain() + categoryId, + author.toDomain() ); } } diff --git a/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/repository/PublicationRepository.java b/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/repository/PublicationRepository.java index 083470f..fcb16bf 100644 --- a/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/repository/PublicationRepository.java +++ b/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/repository/PublicationRepository.java @@ -13,7 +13,6 @@ public interface PublicationRepository extends JpaRepository findById(@Param("publicationId") UUID publicationId);