From 5d267111a9fe56cb86a9707693d71b60f36d3d16 Mon Sep 17 00:00:00 2001 From: Florian THIERRY Date: Thu, 14 Mar 2024 13:56:34 +0100 Subject: [PATCH] Add illustration id to publication entity. --- .../application/picture/PictureUseCases.java | 4 ++ .../PublicationCreationRequestValidator.java | 4 +- .../PublicationUpdateRequestValidator.java | 2 +- .../publication/PublicationUseCases.java | 25 ++++++------ .../domain/publication/model/Publication.java | 2 +- .../model/PublicationEditionRequest.java | 2 +- .../model/builder/AuthorBuilder.java | 2 +- .../model/builder/PublicationBuilder.java | 38 +++++++++---------- .../publication/model/PublicationDto.java | 4 +- .../model/PublicationEditionRequestDto.java | 4 +- .../publication/model/AuthorEntity.java | 4 +- .../publication/model/PublicationEntity.java | 11 +++--- .../repository/PublicationRepository.java | 1 - .../001-initial-script-tables-creation.sql | 6 +-- .../Codiki/environments/localhost.bru | 2 +- 15 files changed, 57 insertions(+), 54 deletions(-) diff --git a/codiki-application/src/main/java/org/codiki/application/picture/PictureUseCases.java b/codiki-application/src/main/java/org/codiki/application/picture/PictureUseCases.java index 86a10a7..76b6fa2 100644 --- a/codiki-application/src/main/java/org/codiki/application/picture/PictureUseCases.java +++ b/codiki-application/src/main/java/org/codiki/application/picture/PictureUseCases.java @@ -44,4 +44,8 @@ public class PictureUseCases { public Optional findById(UUID pictureId) { return picturePort.findById(pictureId); } + + public boolean existsById(UUID pictureId) { + return picturePort.existsById(pictureId); + } } diff --git a/codiki-application/src/main/java/org/codiki/application/publication/PublicationCreationRequestValidator.java b/codiki-application/src/main/java/org/codiki/application/publication/PublicationCreationRequestValidator.java index 3d45d77..e5a9920 100644 --- a/codiki-application/src/main/java/org/codiki/application/publication/PublicationCreationRequestValidator.java +++ b/codiki-application/src/main/java/org/codiki/application/publication/PublicationCreationRequestValidator.java @@ -19,8 +19,8 @@ public class PublicationCreationRequestValidator { throw new PublicationEditionException("description cannot be null"); } - if (request.pictureId() == null) { - throw new PublicationEditionException("pictureId cannot be null"); + if (request.illustrationId() == null) { + throw new PublicationEditionException("illustrationId cannot be null"); } } } diff --git a/codiki-application/src/main/java/org/codiki/application/publication/PublicationUpdateRequestValidator.java b/codiki-application/src/main/java/org/codiki/application/publication/PublicationUpdateRequestValidator.java index 83435bd..967a2c6 100644 --- a/codiki-application/src/main/java/org/codiki/application/publication/PublicationUpdateRequestValidator.java +++ b/codiki-application/src/main/java/org/codiki/application/publication/PublicationUpdateRequestValidator.java @@ -13,7 +13,7 @@ public class PublicationUpdateRequestValidator { isNull(request.title()) && isNull(request.text()) && isNull(request.description()) && - isNull(request.pictureId()) && + isNull(request.illustrationId()) && isNull(request.categoryId()) ) { throw new PublicationEditionException("no any field is filled"); 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 33a58b1..afd8e64 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 @@ -15,7 +15,6 @@ import org.codiki.domain.category.exception.CategoryNotFoundException; import org.codiki.domain.category.model.Category; import org.codiki.domain.exception.AuthenticationRequiredException; import org.codiki.domain.picture.exception.PictureNotFoundException; -import org.codiki.domain.picture.model.Picture; import org.codiki.domain.publication.exception.PublicationEditionException; import org.codiki.domain.publication.exception.PublicationNotFoundException; import org.codiki.domain.publication.exception.PublicationUpdateForbiddenException; @@ -68,10 +67,11 @@ public class PublicationUseCases { new CategoryNotFoundException(request.categoryId()) )); - Picture picture = pictureUseCases.findById(request.pictureId()) - .orElseThrow(() -> new PublicationEditionException( - new PictureNotFoundException(request.pictureId()) - )); + if (!pictureUseCases.existsById(request.illustrationId())) { + throw new PublicationEditionException( + new PictureNotFoundException(request.illustrationId()) + ); + } Publication newPublication = aPublication() .withId(UUID.randomUUID()) @@ -79,7 +79,7 @@ public class PublicationUseCases { .withTitle(request.title()) .withText(request.text()) .withDescription(request.description()) - .withPicture(picture) + .withIllustrationId(request.illustrationId()) .withCreationDate(ZonedDateTime.now(clock)) .withAuthor(anAuthor().basedOn(authenticatedUser).build()) .withCategory(category) @@ -117,12 +117,13 @@ public class PublicationUseCases { publicationBuilder.withDescription(request.description()); } - if (!isNull(request.pictureId())) { - Picture picture = pictureUseCases.findById(request.pictureId()) - .orElseThrow(() -> new PublicationEditionException( - new PictureNotFoundException(request.pictureId()) - )); - publicationBuilder.withPicture(picture); + if (!isNull(request.illustrationId())) { + if (!pictureUseCases.existsById(request.illustrationId())) { + throw new PublicationEditionException( + new PictureNotFoundException(request.illustrationId()) + ); + } + publicationBuilder.withIllustrationId(request.illustrationId()); } if (!isNull(request.categoryId())) { 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 dd73353..92a7339 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 @@ -13,7 +13,7 @@ public record Publication( String text, String description, ZonedDateTime creationDate, - Picture picture, + UUID illustrationId, Author author, Category category ) { diff --git a/codiki-domain/src/main/java/org/codiki/domain/publication/model/PublicationEditionRequest.java b/codiki-domain/src/main/java/org/codiki/domain/publication/model/PublicationEditionRequest.java index 932222c..b5b607c 100644 --- a/codiki-domain/src/main/java/org/codiki/domain/publication/model/PublicationEditionRequest.java +++ b/codiki-domain/src/main/java/org/codiki/domain/publication/model/PublicationEditionRequest.java @@ -6,6 +6,6 @@ public record PublicationEditionRequest( String title, String text, String description, - UUID pictureId, + UUID illustrationId, UUID categoryId ) {} diff --git a/codiki-domain/src/main/java/org/codiki/domain/publication/model/builder/AuthorBuilder.java b/codiki-domain/src/main/java/org/codiki/domain/publication/model/builder/AuthorBuilder.java index cd48056..1003c1c 100644 --- a/codiki-domain/src/main/java/org/codiki/domain/publication/model/builder/AuthorBuilder.java +++ b/codiki-domain/src/main/java/org/codiki/domain/publication/model/builder/AuthorBuilder.java @@ -20,7 +20,7 @@ public class AuthorBuilder { return new AuthorBuilder() .withId(user.id()) // .withName(user.name()) -// .withImage(user.pictureId()) +// .withImage(user.illustrationId()) ; } 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 72921f5..9598af7 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 @@ -3,9 +3,8 @@ package org.codiki.domain.publication.model.builder; import java.time.ZonedDateTime; import java.util.UUID; -import org.codiki.domain.picture.model.Picture; -import org.codiki.domain.publication.model.Author; import org.codiki.domain.category.model.Category; +import org.codiki.domain.publication.model.Author; import org.codiki.domain.publication.model.Publication; public class PublicationBuilder { @@ -14,7 +13,7 @@ public class PublicationBuilder { private String title; private String text; private String description; - private Picture picture; + private UUID illustrationId; private ZonedDateTime creationDate; private Author author; private Category category; @@ -25,6 +24,19 @@ public class PublicationBuilder { return new PublicationBuilder(); } + public PublicationBuilder basedOn(Publication publication) { + return new PublicationBuilder() + .withId(publication.id()) + .withKey(publication.key()) + .withTitle(publication.title()) + .withText(publication.text()) + .withDescription(publication.description()) + .withIllustrationId(publication.illustrationId()) + .withCreationDate(publication.creationDate()) + .withAuthor(publication.author()) + .withCategory(publication.category()); + } + public PublicationBuilder withId(UUID id) { this.id = id; return this; @@ -50,8 +62,8 @@ public class PublicationBuilder { return this; } - public PublicationBuilder withPicture(Picture picture) { - this.picture = picture; + public PublicationBuilder withIllustrationId(UUID illustrationId) { + this.illustrationId = illustrationId; return this; } @@ -77,22 +89,10 @@ public class PublicationBuilder { title, text, description, - creationDate, picture, + creationDate, + illustrationId, author, category ); } - - public PublicationBuilder basedOn(Publication publication) { - return new PublicationBuilder() - .withId(publication.id()) - .withKey(publication.key()) - .withTitle(publication.title()) - .withText(publication.text()) - .withDescription(publication.description()) - .withPicture(publication.picture()) - .withCreationDate(publication.creationDate()) - .withAuthor(publication.author()) - .withCategory(publication.category()); - } } 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 4d2c103..ab20893 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 @@ -13,7 +13,7 @@ public record PublicationDto( String text, String description, ZonedDateTime creationDate, - UUID picture, + UUID illustrationId, AuthorDto author, CategoryDto category ) { @@ -25,7 +25,7 @@ public record PublicationDto( publication.text(), publication.description(), publication.creationDate(), - publication.picture().id(), + publication.illustrationId(), new AuthorDto(publication.author()), new CategoryDto(publication.category()) ); diff --git a/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationEditionRequestDto.java b/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationEditionRequestDto.java index 23d33d1..da45b13 100644 --- a/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationEditionRequestDto.java +++ b/codiki-exposition/src/main/java/org/codiki/exposition/publication/model/PublicationEditionRequestDto.java @@ -8,10 +8,10 @@ public record PublicationEditionRequestDto( String title, String text, String description, - UUID pictureId, + UUID illustrationId, UUID categoryId ) { public PublicationEditionRequest toDomain() { - return new PublicationEditionRequest(title, text, description, pictureId, categoryId); + return new PublicationEditionRequest(title, text, description, illustrationId, categoryId); } } diff --git a/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/model/AuthorEntity.java b/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/model/AuthorEntity.java index 5d16d01..85ca6fa 100644 --- a/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/model/AuthorEntity.java +++ b/codiki-infrastructure/src/main/java/org/codiki/infrastructure/publication/model/AuthorEntity.java @@ -24,13 +24,13 @@ public class AuthorEntity { private UUID id; @Column(nullable = false) private String name; -// private String pictureId; +// private String illustrationId; public AuthorEntity(Author author) { this( author.id(), author.name() -// author.pictureId() +// author.illustrationId() ); } 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 de46f43..d3b2a33 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 @@ -5,7 +5,6 @@ import java.util.UUID; import org.codiki.domain.publication.model.Publication; import org.codiki.infrastructure.category.model.CategoryEntity; -import org.codiki.infrastructure.picture.model.PictureEntity; import static jakarta.persistence.FetchType.LAZY; import jakarta.persistence.Column; @@ -38,9 +37,8 @@ public class PublicationEntity { private String description; @Column(nullable = false) private ZonedDateTime creationDate; - @ManyToOne(fetch = LAZY) - @JoinColumn(name = "picture_id") - private PictureEntity picture; + @Column(nullable = false) + private UUID illustrationId; @ManyToOne(fetch = LAZY) @JoinColumn(name = "author_id") private AuthorEntity author; @@ -56,7 +54,7 @@ public class PublicationEntity { publication.text(), publication.description(), publication.creationDate(), - new PictureEntity(publication.picture()), + publication.illustrationId(), new AuthorEntity(publication.author()), new CategoryEntity(publication.category()) ); @@ -69,7 +67,8 @@ public class PublicationEntity { title, text, description, - creationDate, picture.toDomain(), + creationDate, + illustrationId, author.toDomain(), category.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 1888477..083470f 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 @@ -12,7 +12,6 @@ public interface PublicationRepository extends JpaRepository