Infrastructure
This commit is contained in:
67
infrastructure/pom.xml
Normal file
67
infrastructure/pom.xml
Normal file
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ms-library</artifactId>
|
||||
<groupId>org.example</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>infrastructure</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.example</groupId>
|
||||
<artifactId>domain</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct</artifactId>
|
||||
<version>1.4.2.Final</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<annotationProcessorPaths>
|
||||
<path>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct-processor</artifactId>
|
||||
<version>1.4.2.Final</version>
|
||||
</path>
|
||||
<path>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.12</version>
|
||||
</path>
|
||||
</annotationProcessorPaths>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,59 @@
|
||||
package org.example.adapters;
|
||||
|
||||
import org.example.entity.Book;
|
||||
import org.example.mappers.BookMapper;
|
||||
import org.example.repository.BookRepository;
|
||||
import org.exemple.data.BookDto;
|
||||
import org.exemple.ports.spi.BookPersistencePort;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class BookJpaAdapter implements BookPersistencePort {
|
||||
|
||||
@Autowired
|
||||
private BookRepository bookRepository;
|
||||
|
||||
@Override
|
||||
public BookDto addBook(BookDto bookDto) {
|
||||
|
||||
Book book = BookMapper.INSTANCE.bookDtoToBook(bookDto);
|
||||
|
||||
Book bookSaved = bookRepository.save(book);
|
||||
|
||||
return BookMapper.INSTANCE.bookToBookDto(bookSaved);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteBookById(Long id) {
|
||||
bookRepository.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BookDto updateBook(BookDto bookDto) {
|
||||
return addBook(bookDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BookDto> getBooks() {
|
||||
|
||||
List<Book> bookList = bookRepository.findAll();
|
||||
|
||||
return BookMapper.INSTANCE.bookListToBookDtoList(bookList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BookDto getBookById(Long bookId) {
|
||||
|
||||
Optional<Book> book = bookRepository.findById(bookId);
|
||||
|
||||
if (book.isPresent()) {
|
||||
return BookMapper.INSTANCE.bookToBookDto(book.get());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
29
infrastructure/src/main/java/org/example/entity/Book.java
Normal file
29
infrastructure/src/main/java/org/example/entity/Book.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package org.example.entity;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
|
||||
@Entity
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class Book {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
private String title;
|
||||
|
||||
private String description;
|
||||
|
||||
private Double price;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package org.example.mappers;
|
||||
|
||||
import org.example.entity.Book;
|
||||
import org.exemple.data.BookDto;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface BookMapper {
|
||||
|
||||
BookMapper INSTANCE = Mappers.getMapper(BookMapper.class);
|
||||
|
||||
BookDto bookToBookDto(Book book);
|
||||
|
||||
Book bookDtoToBook(BookDto bookDto);
|
||||
|
||||
List<BookDto> bookListToBookDtoList(List<Book> bookList);
|
||||
|
||||
List<Book> BookDtoListTobookList(List<BookDto> BookDtoList);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.example.repository;
|
||||
|
||||
import org.example.entity.Book;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface BookRepository extends JpaRepository<Book, Long> {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user