Skip to content

Commit d3a88df

Browse files
Dev (#58)
* configured actuator (#8) * Improve filtering (#9) * implemented search games method * refactored getById to use apiId * ran mvnclean package * Add user registration login (#11) * implemented registration and login * renamed username field, corrected structure of files * implemented user auth * fetched description * Merge pull request #13 from mategames-team/add-game-lists-to-user Add game lists to user * Improve fetch best games (#14) * changed get url * added already existing game check * fetch best games, update existing * changed sending configuration, added loggin * added logging to errors * created user info update and get (#15) * Refactor get by api id method (#16) * made method check if in db and if description is null * made method check if in db and if description is null * ran mvn cl package * Create get all games from api endpoint (#17) * created getAll method * made method retun page * created get all method * Configure comments (#18) * added create comment endpoint * created create, get, delete endpoints * configured comments * refactored comments (#19) * refactored comments * refactored comments * added status to response (#20) * created search in api endpoint (#21) * Create get user comments (#22) * created get user comments endpoint * updated readme * Update Dockerfile for dev environment * added swagger (#23) * added swagger * added link to swagger to readme * configured swagger * configured exceptions * refactored security and health (#24) * Refactor db update (#25) * made scheduled update * made scheduled and admin update * allowed any authenticated user se userinfo (#26) * allowed any authenticated user se userinfo * refactored readme * ran mvn clean package * configured setting user role during registration (#27) * created service tests (#28) * created service tests * removed unused import * made method return gameDto (#29) * configured cors (#30) * added preconditions to yamls (#31) * added patch method to cors (#32) * added response code (#33) * retun user info depending on param, return user id when login (#34) * updated readme, removed unused (#35) * added info about userGames and changed max value of rating to 10 (#37) * added ci file (#39) * added ci file * run mvn clean package * added profileName and gameName to commentDto (#40) * webhook after ci (#44) * Update public endpoints (#46) * made getUserInfo public * made getUserComments public * made getByStatus userGame public * ran mvn clean package * refactored delete method (#48) * made filtering games by several years (#49) * allowed rating to be up to 10 (#51) * added regex to validate (#53) * Add developer info to game (#55) * created developer entiry, configured liquibase * added logic to get developers info if missing * refactored mapping * added developer info * removed email from update method (#56) * return token after registartion (#57) --------- Co-authored-by: Alina Bondarenko <alinamoskovchuk18@gmail.com>
1 parent ea6fb7d commit d3a88df

24 files changed

Lines changed: 334 additions & 16 deletions

src/main/java/com/videogamescatalogue/backend/controller/AuthenticationController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.videogamescatalogue.backend.dto.internal.user.UserLoginRequestDto;
44
import com.videogamescatalogue.backend.dto.internal.user.UserLoginResponseDto;
55
import com.videogamescatalogue.backend.dto.internal.user.UserRegistrationRequestDto;
6+
import com.videogamescatalogue.backend.dto.internal.user.UserRegistrationResponseDto;
67
import com.videogamescatalogue.backend.dto.internal.user.UserResponseDto;
78
import com.videogamescatalogue.backend.security.AuthenticationService;
89
import com.videogamescatalogue.backend.service.user.UserService;
@@ -45,7 +46,7 @@ public class AuthenticationController {
4546
}
4647
)
4748
@PostMapping("/registration")
48-
UserResponseDto registerUser(
49+
UserRegistrationResponseDto registerUser(
4950
@RequestBody @Valid UserRegistrationRequestDto requestDto
5051
) {
5152
return userService.registerUser(requestDto);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.videogamescatalogue.backend.dto.external;
2+
3+
public record ApiResponseDeveloperDto(
4+
Long id,
5+
String name
6+
) {
7+
}

src/main/java/com/videogamescatalogue/backend/dto/external/ApiResponseFullGameDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public record ApiResponseFullGameDto(
1515

1616
List<ApiResponseGenreDto> genres,
1717

18+
List<ApiResponseDeveloperDto> developers,
19+
1820
BigDecimal rating
1921
) {
2022
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.videogamescatalogue.backend.dto.internal.developer;
2+
3+
public record DeveloperDto(
4+
Long id,
5+
Long apiId,
6+
String name
7+
) {
8+
}

src/main/java/com/videogamescatalogue/backend/dto/internal/game/GameDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.videogamescatalogue.backend.dto.internal.game;
22

3+
import com.videogamescatalogue.backend.dto.internal.developer.DeveloperDto;
34
import com.videogamescatalogue.backend.dto.internal.genre.GenreDto;
45
import com.videogamescatalogue.backend.dto.internal.platform.PlatformDto;
56
import java.math.BigDecimal;
@@ -12,6 +13,7 @@ public record GameDto(
1213
String backgroundImage,
1314
Set<PlatformDto> platforms,
1415
Set<GenreDto> genres,
16+
Set<DeveloperDto> developers,
1517
BigDecimal apiRating,
1618
String description
1719
) {

src/main/java/com/videogamescatalogue/backend/dto/internal/game/GameWithStatusDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.videogamescatalogue.backend.dto.internal.game;
22

3+
import com.videogamescatalogue.backend.dto.internal.developer.DeveloperDto;
34
import com.videogamescatalogue.backend.dto.internal.genre.GenreDto;
45
import com.videogamescatalogue.backend.dto.internal.platform.PlatformDto;
56
import com.videogamescatalogue.backend.model.UserGame;
@@ -13,6 +14,7 @@ public record GameWithStatusDto(
1314
String backgroundImage,
1415
Set<PlatformDto> platforms,
1516
Set<GenreDto> genres,
17+
Set<DeveloperDto> developers,
1618
BigDecimal apiRating,
1719
String description,
1820
UserGame.GameStatus status

src/main/java/com/videogamescatalogue/backend/dto/internal/user/UpdateUserRequestDto.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
package com.videogamescatalogue.backend.dto.internal.user;
22

3-
import jakarta.validation.constraints.Email;
43
import jakarta.validation.constraints.Size;
54

65
public record UpdateUserRequestDto(
76
String profileName,
8-
@Email(message = "Invalid format of email.")
9-
String email,
107
@Size(max = 5000, message = "About user info must be less than 5000 digits")
118
String about,
129
@Size(max = 50, message = "Location info must be less than 50 digits")
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.videogamescatalogue.backend.dto.internal.user;
2+
3+
public record UserRegistrationResponseDto(
4+
Long id,
5+
String profileName,
6+
String about,
7+
String location,
8+
String token
9+
) {
10+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.videogamescatalogue.backend.mapper.developer;
2+
3+
import com.videogamescatalogue.backend.config.MapperConfig;
4+
import com.videogamescatalogue.backend.dto.external.ApiResponseDeveloperDto;
5+
import com.videogamescatalogue.backend.dto.internal.developer.DeveloperDto;
6+
import com.videogamescatalogue.backend.model.Developer;
7+
import java.util.List;
8+
import java.util.Set;
9+
import org.mapstruct.Mapper;
10+
import org.mapstruct.Mapping;
11+
12+
@Mapper(config = MapperConfig.class)
13+
public interface DeveloperMapper {
14+
@Mapping(source = "id", target = "apiId")
15+
@Mapping(target = "id", ignore = true)
16+
Developer toModel(ApiResponseDeveloperDto apiResponseDeveloperDto);
17+
18+
Set<Developer> toModelSet(List<ApiResponseDeveloperDto> developers);
19+
20+
Set<DeveloperDto> toDtoSet(Set<Developer> developers);
21+
22+
DeveloperDto toDto(Developer developer);
23+
24+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.videogamescatalogue.backend.mapper.developer;
2+
3+
import com.videogamescatalogue.backend.dto.external.ApiResponseDeveloperDto;
4+
import com.videogamescatalogue.backend.dto.internal.developer.DeveloperDto;
5+
import com.videogamescatalogue.backend.model.Developer;
6+
import com.videogamescatalogue.backend.repository.DeveloperRepository;
7+
import java.util.List;
8+
import java.util.Map;
9+
import java.util.Set;
10+
import java.util.stream.Collectors;
11+
import lombok.RequiredArgsConstructor;
12+
import org.mapstruct.Named;
13+
import org.springframework.stereotype.Component;
14+
15+
@RequiredArgsConstructor
16+
@Component
17+
public class DeveloperProvider {
18+
private final DeveloperMapper developerMapper;
19+
private final DeveloperRepository developerRepository;
20+
21+
@Named("toDevelopersSet")
22+
public Set<Developer> toDevelopersSet(List<ApiResponseDeveloperDto> developers) {
23+
List<Long> developerApiIds = developers.stream()
24+
.map(ApiResponseDeveloperDto::id)
25+
.toList();
26+
27+
List<Developer> existingDevelopers = developerRepository.findAllByApiIdIn(developerApiIds);
28+
29+
Map<Long, Developer> existingDevelopersMap = existingDevelopers.stream()
30+
.collect(Collectors.toMap(
31+
Developer::getApiId,
32+
d -> d
33+
));
34+
35+
Set<Developer> developersSet = developers.stream()
36+
.map(d -> existingDevelopersMap.getOrDefault(
37+
d.id(),
38+
developerMapper.toModel(d)))
39+
.collect(Collectors.toSet());
40+
41+
return developersSet;
42+
}
43+
44+
@Named("toDeveloperDtosSet")
45+
public Set<DeveloperDto> toDeveloperDtosSet(Set<Developer> developers) {
46+
return developerMapper.toDtoSet(developers);
47+
}
48+
}

0 commit comments

Comments
 (0)