Skip to content

Commit 489bb93

Browse files
committed
add new file
1 parent c3bbe60 commit 489bb93

File tree

13 files changed

+296
-6
lines changed

13 files changed

+296
-6
lines changed

pom.xml

Lines changed: 63 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
44
<modelVersion>4.0.0</modelVersion>
55
<parent>
66
<groupId>org.springframework.boot</groupId>
@@ -15,6 +15,9 @@
1515
<description>jv-rick-and-morty</description>
1616
<properties>
1717
<java.version>17</java.version>
18+
<lombok.version>1.18.32</lombok.version>
19+
<lombok.mapstruct.binding.version>0.2.0</lombok.mapstruct.binding.version>
20+
<mapstruct.version>1.6.3</mapstruct.version>
1821
<maven.checkstyle.plugin.version>3.1.1</maven.checkstyle.plugin.version>
1922
<maven.checkstyle.plugin.configLocation>
2023
https://raw.githubusercontent.com/mate-academy/style-guides/master/java/checkstyle.xml
@@ -25,22 +28,56 @@
2528
<groupId>org.springframework.boot</groupId>
2629
<artifactId>spring-boot-starter</artifactId>
2730
</dependency>
28-
2931
<dependency>
3032
<groupId>org.springframework.boot</groupId>
3133
<artifactId>spring-boot-starter-test</artifactId>
3234
<scope>test</scope>
3335
</dependency>
36+
<dependency>
37+
<groupId>org.mapstruct</groupId>
38+
<artifactId>mapstruct-processor</artifactId>
39+
<version>${mapstruct.version}</version>
40+
<scope>provided</scope>
41+
</dependency>
3442

3543
<dependency>
3644
<groupId>org.springframework.boot</groupId>
3745
<artifactId>spring-boot-starter-data-jpa</artifactId>
3846
</dependency>
39-
4047
<dependency>
4148
<groupId>com.h2database</groupId>
4249
<artifactId>h2</artifactId>
4350
</dependency>
51+
<dependency>
52+
<groupId>mysql</groupId>
53+
<artifactId>mysql-connector-java</artifactId>
54+
<version>8.0.33</version>
55+
</dependency>
56+
<dependency>
57+
<groupId>org.projectlombok</groupId>
58+
<artifactId>lombok</artifactId>
59+
<version>${lombok.version}</version>
60+
</dependency>
61+
62+
<dependency>
63+
<groupId>org.mapstruct</groupId>
64+
<artifactId>mapstruct</artifactId>
65+
<version>${mapstruct.version}</version>
66+
</dependency>
67+
<dependency>
68+
<groupId>com.fasterxml.jackson.core</groupId>
69+
<artifactId>jackson-databind</artifactId>
70+
<version>2.19.0</version>
71+
</dependency>
72+
<dependency>
73+
<groupId>org.springdoc</groupId>
74+
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
75+
<version>2.5.0</version>
76+
</dependency>
77+
<dependency>
78+
<groupId>org.springframework.boot</groupId>
79+
<artifactId>spring-boot-starter-web</artifactId>
80+
</dependency>
4481
</dependencies>
4582

4683
<build>
@@ -55,7 +92,7 @@
5592
<version>3.3.0</version>
5693
<executions>
5794
<execution>
58-
<phase>compile</phase>
95+
<phase>validate</phase>
5996
<goals>
6097
<goal>check</goal>
6198
</goals>
@@ -68,7 +105,28 @@
68105
<linkXRef>false</linkXRef>
69106
</configuration>
70107
</plugin>
108+
<plugin>
109+
<groupId>org.apache.maven.plugins</groupId>
110+
<artifactId>maven-compiler-plugin</artifactId>
111+
<version>3.8.1</version>
112+
<configuration>
113+
<source>${java.version}</source>
114+
<target>${java.version}</target>
115+
<annotationProcessorPaths>
116+
<path>
117+
<groupId>org.mapstruct</groupId>
118+
<artifactId>mapstruct-processor</artifactId>
119+
<version>${mapstruct.version}</version>
120+
</path>
121+
<path>
122+
<groupId>org.projectlombok</groupId>
123+
<artifactId>lombok</artifactId>
124+
<version>${lombok.version}</version>
125+
</path>
126+
</annotationProcessorPaths>
127+
</configuration>
128+
</plugin>
71129
</plugins>
72130
</build>
73131

74-
</project>
132+
</project>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package mate.academy.rickandmorty.config;
2+
3+
import org.mapstruct.InjectionStrategy;
4+
import org.mapstruct.NullValueCheckStrategy;
5+
6+
@org.mapstruct.MapperConfig(
7+
componentModel = "spring",
8+
injectionStrategy = InjectionStrategy.CONSTRUCTOR,
9+
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS
10+
11+
)
12+
public class MapperConfig {
13+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package mate.academy.rickandmorty.controler;
2+
3+
import io.swagger.v3.oas.annotations.Operation;
4+
import java.util.List;
5+
import lombok.RequiredArgsConstructor;
6+
import mate.academy.rickandmorty.dto.CharacterDto;
7+
import mate.academy.rickandmorty.service.CharacterService;
8+
import org.springframework.web.bind.annotation.GetMapping;
9+
import org.springframework.web.bind.annotation.RequestMapping;
10+
import org.springframework.web.bind.annotation.RequestParam;
11+
import org.springframework.web.bind.annotation.RestController;
12+
13+
@RestController
14+
@RequestMapping("/characters")
15+
@RequiredArgsConstructor
16+
public class CharacterController {
17+
18+
private final CharacterService characterService;
19+
20+
@Operation(summary = "Get random character")
21+
@GetMapping("/random")
22+
public CharacterDto getRandomCharacter() {
23+
return characterService.getRandomCharacter();
24+
}
25+
26+
@Operation(summary = "Find character by name")
27+
@GetMapping()
28+
public List<CharacterDto> findCharacterByName(@RequestParam String name) {
29+
return characterService.findCharactersByName(name);
30+
}
31+
32+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package mate.academy.rickandmorty.dto;
2+
3+
import java.util.List;
4+
import lombok.Data;
5+
6+
@Data
7+
public class CharacterDataDto {
8+
private List<CharacterDto> results;
9+
private CharacterInfoDto info;
10+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package mate.academy.rickandmorty.dto;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class CharacterDto {
7+
private Long id;
8+
private Long externalId;
9+
private String name;
10+
private String status;
11+
private String gender;
12+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package mate.academy.rickandmorty.dto;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class CharacterInfoDto {
7+
private String next;
8+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package mate.academy.rickandmorty.mapper;
2+
3+
import mate.academy.rickandmorty.config.MapperConfig;
4+
import mate.academy.rickandmorty.dto.CharacterDto;
5+
import mate.academy.rickandmorty.model.RickAndMortyCharacter;
6+
import org.mapstruct.Mapper;
7+
8+
@Mapper(config = MapperConfig.class)
9+
public interface CharacterMapper {
10+
11+
RickAndMortyCharacter toModel(CharacterDto characterDto);
12+
13+
CharacterDto toDto(RickAndMortyCharacter rickAndMortyCharacter);
14+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package mate.academy.rickandmorty.model;
2+
3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.GeneratedValue;
5+
import jakarta.persistence.GenerationType;
6+
import jakarta.persistence.Id;
7+
import jakarta.persistence.Table;
8+
import lombok.Data;
9+
10+
@Entity
11+
@Table(name = "characters")
12+
@Data
13+
public class RickAndMortyCharacter {
14+
@Id
15+
@GeneratedValue(strategy = GenerationType.IDENTITY)
16+
private Long id;
17+
private Long externalId;
18+
private String name;
19+
private String status;
20+
private String gender;
21+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package mate.academy.rickandmorty.repository;
2+
3+
import java.util.List;
4+
import mate.academy.rickandmorty.model.RickAndMortyCharacter;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
7+
public interface CharacterRepository extends JpaRepository<RickAndMortyCharacter, Long> {
8+
List<RickAndMortyCharacter> findByNameContainingIgnoreCase(String name);
9+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package mate.academy.rickandmorty.service;
2+
3+
import java.util.List;
4+
import mate.academy.rickandmorty.dto.CharacterDto;
5+
6+
public interface CharacterService {
7+
void saveAllCharacters();
8+
9+
CharacterDto getRandomCharacter();
10+
11+
List<CharacterDto> findCharactersByName(String name);
12+
}

0 commit comments

Comments
 (0)