diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/BowlDbContext.java b/Sources/API/Quarkus/src/main/java/org/acme/api/BowlDbContext.java index 1f53626..07fbaa9 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/BowlDbContext.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/BowlDbContext.java @@ -3,7 +3,7 @@ package org.acme.api; import javax.inject.Inject; import javax.inject.Singleton; -import org.acme.api.service.*; +import org.acme.api.repository.*; @Singleton public class BowlDbContext { diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/controllers/GameController.java b/Sources/API/Quarkus/src/main/java/org/acme/api/controllers/GameController.java index fa98c5f..e811ee6 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/controllers/GameController.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/controllers/GameController.java @@ -16,7 +16,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.acme.api.dto.GameDto; +import org.acme.api.dto.GameDTO; import org.acme.api.manager.DbManager; import org.jboss.logging.Logger; @@ -33,9 +33,9 @@ public class GameController { DbManager dbManager; @GET - public Uni> getUsers() { + public Uni> getUsers() { LOGGER.info("Getting all game"); - Uni> allGames = dbManager.gameManager.getAllGames(); + Uni> allGames = dbManager.gameManager.getAllGames(); return allGames; } @@ -54,7 +54,7 @@ public class GameController { @POST @ReactiveTransactional - public Uni createGame(GameDto game) { + public Uni createGame(GameDTO game) { if (game == null) { throw new WebApplicationException("user was invalidly set on request.", 422); } diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/controllers/UserController.java b/Sources/API/Quarkus/src/main/java/org/acme/api/controllers/UserController.java index 0eb20db..0b6878d 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/controllers/UserController.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/controllers/UserController.java @@ -11,8 +11,8 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import org.acme.api.BowlDbContext; -import org.acme.api.dto.UserDto; -import org.acme.api.dto.UserTinyDto; +import org.acme.api.dto.UserDTO; +import org.acme.api.dto.UserTinyDTO; import org.acme.api.mapper.UserMapper; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; @@ -35,7 +35,7 @@ public class UserController { @GET @Operation(summary = "Get all users") @Produces(MediaType.APPLICATION_JSON) - public Uni> getUsers() { + public Uni> getUsers() { LOGGER.info("Get all users"); return service.userRepository.findAll().list() .map(entities -> entities.stream().map(UserMapper::toDto).collect(Collectors.toList())); @@ -97,7 +97,7 @@ public class UserController { @APIResponse(responseCode = "201", description = "User successfully created") @APIResponse(responseCode = "422", description = "User invalidly set on request") @ReactiveTransactional - public Uni createUser(UserTinyDto user) { + public Uni createUser(UserTinyDTO user) { if (user == null) { throw new WebApplicationException("user was invalidly set on request.", 422); } @@ -129,7 +129,7 @@ public class UserController { @APIResponse(responseCode = "404", description = "User not found") @Path("/{id}") @ReactiveTransactional - public Uni updateUser(@PathParam("id") Long id, UserTinyDto newUser) { + public Uni updateUser(@PathParam("id") Long id, UserTinyDTO newUser) { LOGGER.info("Update user with id : " + id); return service.userRepository.findById(id) .onItem().ifNull().failWith(() -> new WebApplicationException("User not found", Status.NOT_FOUND)) diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/GameDto.java b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/GameDTO.java similarity index 87% rename from Sources/API/Quarkus/src/main/java/org/acme/api/dto/GameDto.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/dto/GameDTO.java index 52250c5..3f163ee 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/GameDto.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/GameDTO.java @@ -41,13 +41,13 @@ import java.time.LocalDate; @RegisterForReflection // Annotation pour permettre l'utilisation avec Quarkus @Schema(description = "A DTO for transferring game details") -public class GameDto { +public class GameDTO { @JsonProperty("id") public Long id; @JsonProperty("players") - public Uni> players; + public Uni> players; @JsonProperty("date") @JsonFormat(pattern = "yyyy-MM-dd") @@ -57,23 +57,23 @@ public class GameDto { public Long hostID; @JsonProperty("winner") - public UserTinyDto winner; + public UserTinyDTO winner; @JsonIgnore @JsonProperty("rounds") - public Uni> rounds; + public Uni> rounds; - public GameDto() { + public GameDTO() { // Constructeur vide pour la désérialisation } // Constructeur avec tous les champs sauf l'ID (généré automatiquement) - public GameDto(Long id, - Uni> players, + public GameDTO(Long id, + Uni> players, LocalDate time, Long ownerGame, - UserTinyDto winner, - Uni> rounds) { + UserTinyDTO winner, + Uni> rounds) { this.players = players; this.date = time; this.hostID = ownerGame; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/ParticipeDto.java b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/ParticipeDTO.java similarity index 87% rename from Sources/API/Quarkus/src/main/java/org/acme/api/dto/ParticipeDto.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/dto/ParticipeDTO.java index e9889ca..7c12445 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/ParticipeDto.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/ParticipeDTO.java @@ -5,7 +5,7 @@ import org.eclipse.microprofile.openapi.annotations.media.Schema; import io.quarkus.runtime.annotations.RegisterForReflection; @RegisterForReflection -public class ParticipeDto { +public class ParticipeDTO { public Long idUser; @Schema(description = "Name of the guest") @@ -15,9 +15,9 @@ public class ParticipeDto { public int totalPoints; @Schema(description = "The User entity that this Participe belongs to") - public UserDto user; + public UserDTO user; - public ParticipeDto(Long idUser, UserDto user, Integer totalPoints, String guestName) { + public ParticipeDTO(Long idUser, UserDTO user, Integer totalPoints, String guestName) { this.idUser = idUser; this.guestName = guestName; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/RoundDto.java b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/RoundDTO.java similarity index 92% rename from Sources/API/Quarkus/src/main/java/org/acme/api/dto/RoundDto.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/dto/RoundDTO.java index 3bfb51f..8750e29 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/RoundDto.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/RoundDTO.java @@ -3,17 +3,17 @@ package org.acme.api.dto; import io.quarkus.runtime.annotations.RegisterForReflection; @RegisterForReflection -public class RoundDto { +public class RoundDTO { private int playerPosition; private int turn; private int pinsFirstThrow; private int pinsSecondThrow; private int points; - public RoundDto() { + public RoundDTO() { } - public RoundDto(int playerPosition, int turn, int pinsFirstThrow, int pinsSecondThrow, int points) { + public RoundDTO(int playerPosition, int turn, int pinsFirstThrow, int pinsSecondThrow, int points) { this.playerPosition = playerPosition; this.turn = turn; this.pinsFirstThrow = pinsFirstThrow; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserDto.java b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserDTO.java similarity index 86% rename from Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserDto.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserDTO.java index 8b2f8bd..269e2b5 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserDto.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserDTO.java @@ -5,19 +5,20 @@ import org.eclipse.microprofile.openapi.annotations.media.Schema; @RegisterForReflection @Schema(description = "A DTO for transferring user details") -public class UserDto { +public class UserDTO { public Long id; public String name; public String image; public String mail; - //public UserStatsDTO stats; + public UserStatsDTO stats; - public UserDto(Long id, String name, String image, String mail) { + public UserDTO(Long id, String name, String image, String mail, UserStatsDTO stats) { this.id = id; this.name = name; this.image = image; this.mail = mail; + this.stats = stats; } /*public UserDTO(Long id, String name, diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserStatsDto.java b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserStatsDTO.java similarity index 89% rename from Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserStatsDto.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserStatsDTO.java index 05f6113..f039b56 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserStatsDto.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserStatsDTO.java @@ -5,7 +5,7 @@ import org.eclipse.microprofile.openapi.annotations.media.Schema; @RegisterForReflection @Schema(description = "A DTO describing the stats of a User") -public class UserStatsDto { +public class UserStatsDTO { public Long nbVictories; public Long nbGames; public Long highscore; @@ -14,7 +14,7 @@ public class UserStatsDto { public Double avgScore; public Double avgPinsPerRound; - public UserStatsDto(Long nbVictories, Long nbGames, Long highscore, Long nbStrikes, Long nbSpares, Double avgScore, + public UserStatsDTO(Long nbVictories, Long nbGames, Long highscore, Long nbStrikes, Long nbSpares, Double avgScore, Double avgPinsPerRound) { this.nbVictories = nbVictories; this.nbGames = nbGames; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserTinyDto.java b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserTinyDTO.java similarity index 84% rename from Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserTinyDto.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserTinyDTO.java index 0b59cc1..da10373 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserTinyDto.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/dto/UserTinyDTO.java @@ -5,13 +5,13 @@ import org.eclipse.microprofile.openapi.annotations.media.Schema; @RegisterForReflection @Schema(description = "A minimal DTO for transferring user information") -public class UserTinyDto { +public class UserTinyDTO { public String name; public String image; public String mail; public String password; - public UserTinyDto(String name, String image, String mail, String password) { + public UserTinyDTO(String name, String image, String mail, String password) { this.name = name; this.image = image; this.mail = mail; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/manageur/DbManager.java b/Sources/API/Quarkus/src/main/java/org/acme/api/manager/DbManager.java similarity index 100% rename from Sources/API/Quarkus/src/main/java/org/acme/api/manageur/DbManager.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/manager/DbManager.java diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/manageur/GameManager.java b/Sources/API/Quarkus/src/main/java/org/acme/api/manager/GameManager.java similarity index 88% rename from Sources/API/Quarkus/src/main/java/org/acme/api/manageur/GameManager.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/manager/GameManager.java index 1e7a017..b556e9e 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/manageur/GameManager.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/manager/GameManager.java @@ -5,7 +5,7 @@ import java.util.stream.Collectors; import javax.ws.rs.NotFoundException; -import org.acme.api.dto.GameDto; +import org.acme.api.dto.GameDTO; import org.acme.api.mapper.GameMapper; import io.smallrye.mutiny.Uni; @@ -18,18 +18,18 @@ public class GameManager { this.dbManager = dbManager; } - public Uni saveGame(GameDto game) { + public Uni saveGame(GameDTO game) { return dbManager.dbContext.gameRepository.persist(GameMapper.toEntity(game, dbManager.dbContext)) .onItem().transform(gameEntity -> GameMapper.toDto(gameEntity, dbManager.dbContext)); } - public Uni getDetailsGameById(Long gameId) { + public Uni getDetailsGameById(Long gameId) { return dbManager.dbContext.gameRepository.findById(gameId) .onItem().ifNull().failWith(new NotFoundException("Game not found")) .onItem().transform(gameEntity -> GameMapper.toDto(gameEntity, dbManager.dbContext)); } - public Uni> getAllGames() { + public Uni> getAllGames() { return dbManager.dbContext.gameRepository.findAll().list() .onItem().transform(games -> games.stream() .map(gameEntity -> GameMapper.toDto(gameEntity, dbManager.dbContext)) diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/Extensions.java b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/Extensions.java index 020680e..2eacbe3 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/Extensions.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/Extensions.java @@ -7,24 +7,24 @@ import java.util.Date; import java.util.List; import java.util.stream.Collectors; -import org.acme.api.dto.ParticipeDto; -import org.acme.api.dto.RoundDto; +import org.acme.api.dto.ParticipeDTO; +import org.acme.api.dto.RoundDTO; import org.acme.hibernates.entities.ParticipeEntity; import org.acme.hibernates.entities.RoundEntity; import io.smallrye.mutiny.Uni; public class Extensions { - public static Uni> toRoundDtoList(Uni> uni) { + public static Uni> toRoundDtoList(Uni> uni) { return uni.map(roundEntities -> roundEntities.stream() .map(RoundMapper::toDto) .collect(Collectors.toList())); } - public static Uni> toParticipeDtoList(Uni> uni) { + public static Uni> toParticipeDtoList(Uni> uni) { return uni .onItem().transformToUni(participes -> { - List dtos = new ArrayList<>(); + List dtos = new ArrayList<>(); for (ParticipeEntity entity : participes) { dtos.add(ParticipeMapper.toDto(entity)); } diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/GameMapper.java b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/GameMapper.java index 38f68ba..f178a20 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/GameMapper.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/GameMapper.java @@ -1,13 +1,13 @@ package org.acme.api.mapper; import org.acme.api.BowlDbContext; -import org.acme.api.dto.GameDto; +import org.acme.api.dto.GameDTO; import org.acme.hibernates.entities.GameEntity; public class GameMapper { - public static GameDto toDto(GameEntity entity, BowlDbContext dbContext) { - GameDto dto = new GameDto(); + public static GameDTO toDto(GameEntity entity, BowlDbContext dbContext) { + GameDTO dto = new GameDTO(); dto.id = entity.id; dto.players = dbContext.participeRepository.findByGameIdQ(entity.id); dto.date = Extensions.toLocalDate(entity.time); @@ -16,7 +16,7 @@ public class GameMapper { return dto; } - public static GameEntity toEntity(GameDto entity, BowlDbContext dbContext) { + public static GameEntity toEntity(GameDTO entity, BowlDbContext dbContext) { GameEntity game = new GameEntity(); return game; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/ParticipeMapper.java b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/ParticipeMapper.java index d1f1b06..3034233 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/ParticipeMapper.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/ParticipeMapper.java @@ -1,11 +1,11 @@ package org.acme.api.mapper; -import org.acme.api.dto.ParticipeDto; +import org.acme.api.dto.ParticipeDTO; import org.acme.hibernates.entities.ParticipeEntity; public class ParticipeMapper { - public static ParticipeDto toDto(ParticipeEntity entity) { - return new ParticipeDto(entity.user.id, UserMapper.toDto(entity.user), entity.totalPoints, + public static ParticipeDTO toDto(ParticipeEntity entity) { + return new ParticipeDTO(entity.user.id, UserMapper.toDto(entity.user), entity.totalPoints, entity.guestName); } diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/RoundMapper.java b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/RoundMapper.java index 80cdb53..e7a5f3f 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/RoundMapper.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/RoundMapper.java @@ -2,13 +2,13 @@ package org.acme.api.mapper; import java.util.List; -import org.acme.api.dto.RoundDto; +import org.acme.api.dto.RoundDTO; import org.acme.hibernates.entities.RoundEntity; import org.acme.hibernates.entities.ThrowEntity; public class RoundMapper { - public static RoundDto toDto(RoundEntity entity) { + public static RoundDTO toDto(RoundEntity entity) { List throwsGame = entity.throwsGame; int val1 = 0; int val2 = 0; @@ -20,6 +20,6 @@ public class RoundMapper { val1 = throwsGame.get(1).pins; } - return new RoundDto(entity.participe.id.position, 0, val1, val2, entity.points); + return new RoundDTO(entity.participe.id.position, 0, val1, val2, entity.points); } } diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/UserMapper.java b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/UserMapper.java index 6e1172e..612b761 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/UserMapper.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/UserMapper.java @@ -1,7 +1,7 @@ package org.acme.api.mapper; -import org.acme.api.dto.UserDto; -import org.acme.api.dto.UserTinyDto; +import org.acme.api.dto.UserDTO; +import org.acme.api.dto.UserTinyDTO; import org.acme.hibernates.entities.UserEntity; import java.security.MessageDigest; @@ -9,11 +9,11 @@ public class UserMapper { private static final String HASH_ALGORITHM = "SHA-256"; - public static UserDto toDto(UserEntity user) { - return new UserDto(user.id, user.getName(), user.getImage(), user.getMail()); + public static UserDTO toDto(UserEntity user) { + return new UserDTO(user.id, user.getName(), user.getImage(), user.getMail(), UserStatsMapper.toDto(user.stats)); } - public static UserEntity toEntity(UserTinyDto user) { + public static UserEntity toEntity(UserTinyDTO user) { try { MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); byte[] hashedBytes = digest.digest(user.password.getBytes("UTF-8")); diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/UserStatsMapper.java b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/UserStatsMapper.java new file mode 100644 index 0000000..4ad5075 --- /dev/null +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/mapper/UserStatsMapper.java @@ -0,0 +1,12 @@ +package org.acme.api.mapper; + +import org.acme.api.dto.UserStatsDTO; +import org.acme.hibernates.entities.UserStatsEntity; + +public class UserStatsMapper { + + public static UserStatsDTO toDto(UserStatsEntity stats) { + return new UserStatsDTO(stats.getNbVictories(),stats.getNbGames(), stats.getHighscore(), stats.getNbStrikes(), stats.getNbSpares(), stats.getAvgScore(), stats.getAvgPinsPerRound()); + } + +} diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/service/GameRepository.java b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/GameRepository.java similarity index 77% rename from Sources/API/Quarkus/src/main/java/org/acme/api/service/GameRepository.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/repository/GameRepository.java index 563b22f..eee77e2 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/service/GameRepository.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/GameRepository.java @@ -1,10 +1,10 @@ -package org.acme.api.service; +package org.acme.api.repository; import java.util.List; import javax.enterprise.context.ApplicationScoped; -import org.acme.api.dto.GameDto; +import org.acme.api.dto.GameDTO; import org.acme.hibernates.entities.GameEntity; import io.quarkus.hibernate.reactive.panache.PanacheRepository; @@ -16,8 +16,8 @@ public class GameRepository implements PanacheRepository { return list("id", id); } - public Uni> findByIdGame(Long id) { - return find("id", id).project(GameDto.class).list(); + public Uni> findByIdGame(Long id) { + return find("id", id).project(GameDTO.class).list(); } } // public Uni getDetailsGameById(Long gameId) { diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/service/GameService.java b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/GameService.java similarity index 100% rename from Sources/API/Quarkus/src/main/java/org/acme/api/service/GameService.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/repository/GameService.java diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/service/ParticipeRepository.java b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/ParticipeRepository.java similarity index 69% rename from Sources/API/Quarkus/src/main/java/org/acme/api/service/ParticipeRepository.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/repository/ParticipeRepository.java index 2e7a176..a0cc67c 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/service/ParticipeRepository.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/ParticipeRepository.java @@ -1,10 +1,10 @@ -package org.acme.api.service; +package org.acme.api.repository; import java.util.List; import javax.enterprise.context.ApplicationScoped; -import org.acme.api.dto.ParticipeDto; +import org.acme.api.dto.ParticipeDTO; import org.acme.hibernates.entities.ParticipeEntity; import io.quarkus.hibernate.reactive.panache.PanacheQuery; @@ -17,8 +17,8 @@ public class ParticipeRepository implements PanacheRepository { return list("game.id", gameId); } - public Uni> findByGameIdQ(Long gameId) { - PanacheQuery query = find("game.id", gameId).project(ParticipeDto.class); + public Uni> findByGameIdQ(Long gameId) { + PanacheQuery query = find("game.id", gameId).project(ParticipeDTO.class); return query.list(); } } diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/service/RoundRepository.java b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/RoundRepository.java similarity index 92% rename from Sources/API/Quarkus/src/main/java/org/acme/api/service/RoundRepository.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/repository/RoundRepository.java index 65a4ce4..cb7446b 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/service/RoundRepository.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/RoundRepository.java @@ -1,4 +1,4 @@ -package org.acme.api.service; +package org.acme.api.repository; import java.util.List; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/service/ThrowRepository.java b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/ThrowRepository.java similarity index 88% rename from Sources/API/Quarkus/src/main/java/org/acme/api/service/ThrowRepository.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/repository/ThrowRepository.java index 7468fda..5d2ecc2 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/service/ThrowRepository.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/ThrowRepository.java @@ -1,4 +1,4 @@ -package org.acme.api.service; +package org.acme.api.repository; import javax.enterprise.context.ApplicationScoped; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/api/service/UserRepository.java b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/UserRepository.java similarity index 80% rename from Sources/API/Quarkus/src/main/java/org/acme/api/service/UserRepository.java rename to Sources/API/Quarkus/src/main/java/org/acme/api/repository/UserRepository.java index 841d894..b676200 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/api/service/UserRepository.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/api/repository/UserRepository.java @@ -1,9 +1,9 @@ -package org.acme.api.service; +package org.acme.api.repository; import javax.enterprise.context.ApplicationScoped; -import org.acme.api.dto.UserDto; -import org.acme.api.dto.UserTinyDto; +import org.acme.api.dto.UserDTO; +import org.acme.api.dto.UserTinyDTO; import org.acme.api.mapper.UserMapper; import org.acme.hibernates.entities.UserEntity; @@ -15,13 +15,13 @@ import java.util.Objects; @ApplicationScoped public class UserRepository implements PanacheRepository { - public Uni addUser(UserTinyDto user) { + public Uni addUser(UserTinyDTO user) { UserEntity userEntity = UserMapper.toEntity(user); return persistAndFlush(userEntity) .map(ignore -> UserMapper.toDto(userEntity)); } - public Uni findWithName(String name) { + public Uni findWithName(String name) { return find("name", name.toLowerCase()) .firstResult() .map(UserMapper::toDto); @@ -39,13 +39,13 @@ public class UserRepository implements PanacheRepository { .map(Objects::nonNull); } - public Uni findWithMail(String mail) { + public Uni findWithMail(String mail) { return find("mail", mail.toLowerCase()) .firstResult() .map(UserMapper::toDto); } - public Uni getUserById(Long id) { + public Uni getUserById(Long id) { return find("id", id) .firstResult() .map(UserMapper::toDto); diff --git a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/GameEntity.java b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/GameEntity.java index d1ac9d8..4c168a1 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/GameEntity.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/GameEntity.java @@ -9,27 +9,21 @@ import javax.persistence.*; import org.hibernate.annotations.ColumnDefault; @Entity -@Table(name = "Game") +@Table(name = "games") public class GameEntity { - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long id; - @Temporal(TemporalType.TIMESTAMP) @Column(nullable = false) @ColumnDefault("CURRENT_TIMESTAMP") public Date time = new Date(); - @ColumnDefault("0") public Long winner = 0L; - @ColumnDefault("0") public int nbPoints = 0; - @ColumnDefault("false") public Boolean isFinished = false; - @ManyToOne @JoinColumn(name = "host_id", referencedColumnName = "id") public UserEntity ownerGame; @@ -38,7 +32,7 @@ public class GameEntity { } public GameEntity(UserEntity user, List players, List rounds, Date time, Long winner, - int nbPoints, Boolean isFinished) { + int nbPoints, Boolean isFinished) { this.ownerGame = user; this.time = time; this.winner = winner; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/ParticipeEntity.java b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/ParticipeEntity.java index 985ff59..2b5b2e1 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/ParticipeEntity.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/ParticipeEntity.java @@ -8,23 +8,18 @@ import org.eclipse.microprofile.openapi.annotations.media.Schema; import org.hibernate.annotations.ColumnDefault; @Entity -@Table(name = "participe") +@Table(name = "participes") public class ParticipeEntity { - @EmbeddedId public ParticipeId id; - @ManyToOne @JoinColumn(name = "idUser", referencedColumnName = "id") public UserEntity user; - @ManyToOne @JoinColumn(name = "idGame", referencedColumnName = "id", insertable = false, updatable = false) public GameEntity game; - @Column(name = "guestName") public String guestName; - @ColumnDefault("0") @Column(name = "totalPoints") public Integer totalPoints = 0; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/RoundEntity.java b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/RoundEntity.java index e7fe4c1..9eb49cf 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/RoundEntity.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/RoundEntity.java @@ -138,26 +138,21 @@ import javax.persistence.*; // // constructors, getters and setters // } @Entity -@Table(name = "Round") +@Table(name = "rounds") public class RoundEntity { - @EmbeddedId public RoundId id; - @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "game_id", referencedColumnName = "id", insertable = false, updatable = false) public GameEntity game; - @ManyToOne @JoinColumns({ @JoinColumn(name = "idGame", referencedColumnName = "idGame", insertable = false, updatable = false), @JoinColumn(name = "position", referencedColumnName = "position", insertable = false, updatable = false) }) public ParticipeEntity participe; - @Column(name = "points") public Integer points; - @OneToMany(mappedBy = "round", cascade = CascadeType.ALL, orphanRemoval = true) public List throwsGame = new ArrayList<>(); diff --git a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/ThrowEntity.java b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/ThrowEntity.java index c0afb59..88652fb 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/ThrowEntity.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/ThrowEntity.java @@ -5,12 +5,10 @@ import javax.persistence.*; import org.hibernate.annotations.ColumnDefault; @Entity -@Table(name = "Throw") +@Table(name = "throws") public class ThrowEntity { - @EmbeddedId public ThrowId id; - @ManyToOne(fetch = FetchType.LAZY) @JoinColumns({ @JoinColumn(name = "game_id", referencedColumnName = "game_id", insertable = false, updatable = false), @@ -19,7 +17,6 @@ public class ThrowEntity { @JoinColumn(name = "turnNumber", referencedColumnName = "turnNumber", insertable = false, updatable = false) }) public RoundEntity round; - @ColumnDefault("0") @Column(name = "pins") public int pins = 0; diff --git a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/UserEntity.java b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/UserEntity.java index 15aa85e..42d1012 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/UserEntity.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/UserEntity.java @@ -3,30 +3,25 @@ package org.acme.hibernates.entities; import javax.persistence.*; @Entity -@Table(name = "Users", uniqueConstraints = {@UniqueConstraint(columnNames = {"name"}), @UniqueConstraint(columnNames = {"mail"})}) +@Table(name = "users", uniqueConstraints = {@UniqueConstraint(columnNames = {"name"}), @UniqueConstraint(columnNames = {"mail"})}) public class UserEntity { - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long id; - @Column(length = 64) private String name; - @Column(length = 255) private String image; - @Column(length = 255) private String mail; - @Column(length = 144) private String password; - //@OneToOne(cascade = CascadeType.ALL, mappedBy = "user", orphanRemoval = true) - //public UserStatsEntity stats; + @OneToOne(cascade = CascadeType.ALL, mappedBy = "user", orphanRemoval = true) + public UserStatsEntity stats; public UserEntity() { - //this.stats = new UserStatsEntity(this); + this.stats = new UserStatsEntity(this); } public UserEntity(String name, String image, String mail, String password) { @@ -34,15 +29,13 @@ public class UserEntity { this.image = image; this.mail = mail; this.password = password; - //this.stats = new UserStatsEntity(this); + this.stats = new UserStatsEntity(this); } - // return name as uppercase in the model public String getName() { return name.substring(0, 1).toUpperCase() + name.substring(1); } - // store all names in lowercase in the DB public void setName(String name) { this.name = name.toLowerCase(); } diff --git a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/UserStatsEntity.java b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/UserStatsEntity.java index 9f1f0bb..3e61825 100644 --- a/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/UserStatsEntity.java +++ b/Sources/API/Quarkus/src/main/java/org/acme/hibernates/entities/UserStatsEntity.java @@ -7,15 +7,14 @@ import java.io.Serializable; import java.util.UUID; @Entity -@Table(name = "UserStats") +@Table(name = "userStats") public class UserStatsEntity { @Id private Long id; @MapsId @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "userId", referencedColumnName = "id", insertable = false, updatable = false) + @JoinColumn(name = "userId", referencedColumnName = "id") private UserEntity user; - @ColumnDefault("0") private Long nbVictories = 0L; @ColumnDefault("0") @@ -33,11 +32,9 @@ public class UserStatsEntity { public UserStatsEntity() { } - public UserStatsEntity(UserEntity user) { this.user = user; } - public Long getId() { return id; } diff --git a/Sources/API/Quarkus/src/main/resources/import.sql b/Sources/API/Quarkus/src/main/resources/import.sql index 59b215b..641642b 100644 --- a/Sources/API/Quarkus/src/main/resources/import.sql +++ b/Sources/API/Quarkus/src/main/resources/import.sql @@ -4,7 +4,11 @@ VALUES ('david', '38762cf7f55934b34d179ae6a4c80cadccbb7f0a2c2a5b4c4a1cb595d8dadb31','','david.d_almeida@etu.uca.fr'), ('emre', 'af7c70f8789d9e0fde5b5f18b61c5e5dc5d5c5f5e7e5c4f4be7b2cb5d57ef52c','','emre.kartal@etu.uca.fr'), ('arthur', '0cc175b9c0f1b6a831c399e269772661','','arthur.valin@etu.uca.fr'); - + +INSERT INTO userStats (userId, avgPinsPerRound, avgScore, highscore, nbGames, nbSpares, nbStrikes, nbVictories) VALUES (1, -1, -1, 0, 0, 0, 0, 0); +INSERT INTO userStats (userId, avgPinsPerRound, avgScore, highscore, nbGames, nbSpares, nbStrikes, nbVictories) VALUES (2, -1, -1, 0, 0, 0, 0, 0); +INSERT INTO userStats (userId, avgPinsPerRound, avgScore, highscore, nbGames, nbSpares, nbStrikes, nbVictories) VALUES (3, -1, -1, 0, 0, 0, 0, 0); + /*INSERT INTO games (isFinished, nbPoints, time, winner, host_id) VALUES (false, 0, CURRENT_TIMESTAMP, 0, 1); INSERT INTO participe (idGame, position, guestname, totalpoints, iduser) VALUES (1, 1, 'Alice', 0, 1); INSERT INTO round (game_id, idGame, position, turnNumber, points) VALUES (1, 1, 1, 1, 0);