Add publisher id in picture entity.

This commit is contained in:
Florian THIERRY
2024-03-14 13:40:32 +01:00
parent fb13cfd74d
commit 2dc386e896
6 changed files with 33 additions and 6 deletions

View File

@@ -5,21 +5,30 @@ import java.util.Optional;
import java.util.UUID; import java.util.UUID;
import static org.codiki.domain.picture.model.builder.PictureBuilder.aPicture; import static org.codiki.domain.picture.model.builder.PictureBuilder.aPicture;
import org.codiki.application.user.UserUseCases;
import org.codiki.domain.exception.AuthenticationRequiredException;
import org.codiki.domain.picture.model.Picture; import org.codiki.domain.picture.model.Picture;
import org.codiki.domain.picture.port.PicturePort; import org.codiki.domain.picture.port.PicturePort;
import org.codiki.domain.user.model.User;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
public class PictureUseCases { public class PictureUseCases {
private final PicturePort picturePort; private final PicturePort picturePort;
private final UserUseCases userUseCases;
public PictureUseCases(PicturePort picturePort) { public PictureUseCases(PicturePort picturePort, UserUseCases userUseCases) {
this.picturePort = picturePort; this.picturePort = picturePort;
this.userUseCases = userUseCases;
} }
public Picture createPicture(File pictureFile) { public Picture createPicture(File pictureFile) {
User authenticatedUser = userUseCases.getAuthenticatedUser()
.orElseThrow(AuthenticationRequiredException::new);
Picture newPicture = aPicture() Picture newPicture = aPicture()
.withId(UUID.randomUUID()) .withId(UUID.randomUUID())
.withPublisher(authenticatedUser)
.withContentFile(pictureFile) .withContentFile(pictureFile)
.build(); .build();

View File

@@ -5,5 +5,6 @@ import java.util.UUID;
public record Picture( public record Picture(
UUID id, UUID id,
UUID publisherId,
File contentFile File contentFile
) {} ) {}

View File

@@ -4,9 +4,11 @@ import java.io.File;
import java.util.UUID; import java.util.UUID;
import org.codiki.domain.picture.model.Picture; import org.codiki.domain.picture.model.Picture;
import org.codiki.domain.user.model.User;
public class PictureBuilder { public class PictureBuilder {
private UUID id; private UUID id;
private UUID publisherId;
private File contentFile; private File contentFile;
private PictureBuilder() {} private PictureBuilder() {}
@@ -26,6 +28,14 @@ public class PictureBuilder {
return this; return this;
} }
public PictureBuilder withPublisherId(UUID publisherId) {
this.publisherId = publisherId;
return this;
}
public PictureBuilder withPublisher(User publisher) {
return withPublisherId(publisher.id());
}
public PictureBuilder withContentFile(File contentFile) { public PictureBuilder withContentFile(File contentFile) {
this.contentFile = contentFile; this.contentFile = contentFile;
@@ -33,6 +43,6 @@ public class PictureBuilder {
} }
public Picture build() { public Picture build() {
return new Picture(id, contentFile); return new Picture(id, publisherId, contentFile);
} }
} }

View File

@@ -4,6 +4,7 @@ import java.util.UUID;
import org.codiki.domain.picture.model.Picture; import org.codiki.domain.picture.model.Picture;
import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
@@ -21,12 +22,15 @@ import lombok.Setter;
public class PictureEntity { public class PictureEntity {
@Id @Id
private UUID id; private UUID id;
@Column(nullable = false)
private UUID publisherId;
public PictureEntity(Picture picture) { public PictureEntity(Picture picture) {
id = picture.id(); id = picture.id();
publisherId = picture.publisherId();
} }
public Picture toDomain() { public Picture toDomain() {
return new Picture(id, null); return new Picture(id, publisherId, null);
} }
} }

View File

@@ -32,9 +32,12 @@ CREATE TABLE IF NOT EXISTS category (
CREATE INDEX category_parent_category_id_idx ON category (parent_category_id); CREATE INDEX category_parent_category_id_idx ON category (parent_category_id);
CREATE TABLE IF NOT EXISTS picture ( CREATE TABLE IF NOT EXISTS picture (
id UUID NOT NULL, id UUID NOT NULL,
CONSTRAINT picture_pk PRIMARY KEY (id) publisher_id UUID NOT NULL,
CONSTRAINT picture_pk PRIMARY KEY (id),
CONSTRAINT picture_publisher_id_fk FOREIGN KEY (publisher_id) REFERENCES "user" (id)
); );
CREATE INDEX picture_publisher_id_idx ON picture (publisher_id);
CREATE TABLE IF NOT EXISTS publication ( CREATE TABLE IF NOT EXISTS publication (
id UUID NOT NULL, id UUID NOT NULL,

View File

@@ -1,7 +1,7 @@
vars { vars {
url: http://localhost:8080 url: http://localhost:8080
publicationId: e23831a6-9cc0-4f3d-9efa-7a1cae191cb1 publicationId: e23831a6-9cc0-4f3d-9efa-7a1cae191cb1
bearerToken: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1YWQ0NjJiOC04ZjllLTRhMjYtYmI4Ni1jNzRmZWY1ZDExYjYiLCJleHAiOjE3MTA0MDc5Mjd9.QdanZXjfLztIVJU-pRS3gZxnC4GIycyhmlCkhYSPchiXpeNzruw_GY3fH1_qshC_AjOCSqGmCq3X1S_zVFdodQ bearerToken: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1YWQ0NjJiOC04ZjllLTRhMjYtYmI4Ni1jNzRmZWY1ZDExYjYiLCJleHAiOjE3MTA0MjE2Nzd9.Ln2C9_3ZmX0nxZukW7N18j3AfJ_NGCiPfhir24C33T-BuvwsQ2iI_09gcxwGtclPWP5DYyM3gFwcH0jdWtPjkA
categoryId: 172fa901-3f4b-4540-92f3-1c15820e8ec9 categoryId: 172fa901-3f4b-4540-92f3-1c15820e8ec9
pictureId: 65b660b7-66bb-4e4a-a62c-fd0ca101f972 pictureId: 65b660b7-66bb-4e4a-a62c-fd0ca101f972
} }