From 65804fb524852938b4c6f886dceeb3e7b510efcc Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Thu, 9 Mar 2023 11:20:01 +0100 Subject: [PATCH] Adding UserStatsEntity and OneToOne Lazy relationship --- .../acme/Hibernates/entities/GameEntity.java | 8 ++-- .../acme/Hibernates/entities/UserEntity.java | 14 ++++--- .../Hibernates/entities/UserStatsEntity.java | 39 +++++++++++++++++++ .../src/main/resources/application.properties | 2 + .../API/Quarkus/src/main/resources/import.sql | 8 ++-- 5 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 Sources/API/Quarkus/src/main/java/org/acme/Hibernates/entities/UserStatsEntity.java 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 4fe0ec7..0e995bb 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 @@ -4,11 +4,9 @@ import java.util.ArrayList; import java.util.Date; import java.util.UUID; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; - +import javax.persistence.*; +@Entity +@Table(name="games") public class GameEntity { @Id 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 1756803..ececb62 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 @@ -1,12 +1,9 @@ package org.acme.Hibernates.entities; -import javax.persistence.Cacheable; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; +import javax.persistence.*; @Entity +@Table(name="users") public class UserEntity { @Id @GeneratedValue @@ -17,6 +14,13 @@ public class UserEntity { @Column(length = 100) private String password; + @OneToOne(cascade = CascadeType.ALL, mappedBy = "user", orphanRemoval = true) + private UserStatsEntity stats; + + public UserEntity() { + this.stats = new UserStatsEntity(this); + } + // return name as uppercase in the model public String getName() { return name.toUpperCase(); 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 new file mode 100644 index 0000000..3fbddd6 --- /dev/null +++ b/Sources/API/Quarkus/src/main/java/org/acme/Hibernates/entities/UserStatsEntity.java @@ -0,0 +1,39 @@ +package org.acme.Hibernates.entities; + +import org.hibernate.annotations.ColumnDefault; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.UUID; + +@Entity +@Table(name="user_stats") +public class UserStatsEntity { + @Id + private Long id; + @MapsId + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn (name = "user_id", referencedColumnName = "id", insertable = false, updatable = false) + private UserEntity user; + @ColumnDefault("0") + private Long nbVictories = 0L; + @ColumnDefault("0") + private Long nbGames = 0L; + @ColumnDefault("0") + private Long highscore = 0L; + @ColumnDefault("0") + private Long nbStrikes = 0L; + @ColumnDefault("0") + private Long nbSpares = 0L; + @ColumnDefault("-1") + private double avgScore = -1; + @ColumnDefault("-1") + private double avgPinsPerRound = -1; + + public UserStatsEntity() { + } + + public UserStatsEntity(UserEntity user) { + this.user = user; + } +} diff --git a/Sources/API/Quarkus/src/main/resources/application.properties b/Sources/API/Quarkus/src/main/resources/application.properties index dd9289c..fa74d58 100644 --- a/Sources/API/Quarkus/src/main/resources/application.properties +++ b/Sources/API/Quarkus/src/main/resources/application.properties @@ -23,3 +23,5 @@ quarkus.oidc.application-type=service quarkus.hibernate-orm.database.generation = drop-and-create quarkus.smallrye-openapi.path=/swagger +quarkus.swagger-ui.path=/swagger-ui +quarkus.swagger-ui.always-include=true diff --git a/Sources/API/Quarkus/src/main/resources/import.sql b/Sources/API/Quarkus/src/main/resources/import.sql index 605c500..d93e737 100644 --- a/Sources/API/Quarkus/src/main/resources/import.sql +++ b/Sources/API/Quarkus/src/main/resources/import.sql @@ -1,4 +1,4 @@ -INSERT INTO userentity(id, name,password) VALUES (nextval('hibernate_sequence'), 'Emre','Emre'); -INSERT INTO userentity(id, name,password) VALUES (nextval('hibernate_sequence'), 'Arthur','Arthur'); -INSERT INTO userentity(id, name,password) VALUES (nextval('hibernate_sequence'), 'Lucas','Lucas'); -INSERT INTO userentity(id, name,password) VALUES (nextval('hibernate_sequence'), 'Louison','Louison'); +INSERT INTO users(id, name,password) VALUES (nextval('hibernate_sequence'), 'Emre','Emre'); +INSERT INTO users(id, name,password) VALUES (nextval('hibernate_sequence'), 'Arthur','Arthur'); +INSERT INTO users(id, name,password) VALUES (nextval('hibernate_sequence'), 'Lucas','Lucas'); +INSERT INTO users(id, name,password) VALUES (nextval('hibernate_sequence'), 'Louison','Louison');