WIP implementation of infrastructure layer of publication creation.
This commit is contained in:
@@ -25,6 +25,10 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.boot</groupId>-->
|
||||
<!-- <artifactId>spring-boot-starter-data-jpa</artifactId>-->
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package org.codiki.exposition.category.model;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.codiki.domain.category.model.Category;
|
||||
|
||||
public record CategoryDto(
|
||||
UUID id,
|
||||
String name,
|
||||
List<CategoryDto> subCategories
|
||||
) {
|
||||
public CategoryDto(Category category) {
|
||||
this(
|
||||
category.id(),
|
||||
category.name(),
|
||||
category.subCategories()
|
||||
.stream()
|
||||
.map(CategoryDto::new)
|
||||
.toList()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.codiki.exposition.publication;
|
||||
|
||||
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.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/publications")
|
||||
public class PublicationController {
|
||||
private final PublicationUseCases publicationUseCases;
|
||||
|
||||
public PublicationController(PublicationUseCases publicationUseCases) {
|
||||
this.publicationUseCases = publicationUseCases;
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public PublicationDto createPublication(@RequestBody PublicationCreationRequestDto requestDto) {
|
||||
PublicationCreationRequest request = requestDto.toDomain();
|
||||
Publication newPublication = publicationUseCases.createPublication(request);
|
||||
return new PublicationDto(newPublication);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package org.codiki.exposition.publication;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.codiki.domain.category.model.Category;
|
||||
import org.codiki.domain.publication.model.Author;
|
||||
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,
|
||||
String key,
|
||||
String title,
|
||||
String text,
|
||||
String description,
|
||||
String image,
|
||||
ZonedDateTime creationDate,
|
||||
AuthorDto author,
|
||||
CategoryDto category
|
||||
) {
|
||||
public PublicationDto(Publication publication) {
|
||||
this(
|
||||
publication.id(),
|
||||
publication.key(),
|
||||
publication.title(),
|
||||
publication.text(),
|
||||
publication.description(),
|
||||
publication.image(),
|
||||
publication.creationDate(),
|
||||
new AuthorDto(publication.author()),
|
||||
new CategoryDto(publication.category())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package org.codiki.exposition.publication.model;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.codiki.domain.publication.model.Author;
|
||||
|
||||
public record AuthorDto(
|
||||
UUID id,
|
||||
String name,
|
||||
String image
|
||||
) {
|
||||
public AuthorDto(Author author) {
|
||||
this(
|
||||
author.id(),
|
||||
author.name(),
|
||||
author.image()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user