From 0b4a0eeb554e5eed548d88163ba24a6fc71f3ab1 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sat, 17 Feb 2024 00:25:19 -0500 Subject: [PATCH] [+] AquaNetUser JPA entity --- .../icu/samnyan/aqua/net/db/AquaNetUser.kt | 42 +++++++++++++++++++ .../samnyan/aqua/sega/general/model/Card.java | 9 +++- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt diff --git a/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt b/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt new file mode 100644 index 00000000..d55fab56 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt @@ -0,0 +1,42 @@ +package icu.samnyan.aqua.net.db + +import icu.samnyan.aqua.sega.general.model.Card +import jakarta.persistence.* +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository +import java.io.Serializable + +@Entity(name = "AquaNetUser") +@Table(name = "aqua_net_user") +class AquaNetUser( + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + var auId: Int = 0, + + // Login credentials + @Column(nullable = false, unique = true) var email: String = "", + var pwHash: String = "", + + var displayName: String = "", + + // Country code at most 3 characters + @Column(length = 3) var country: String = "", + + // Last login time + var lastLogin: Long = 0L, + + // Registration time + var regTime: Long = 0L, + + // Profile fields + var profileLocation: String = "", + var profileBio: String = "", + + // One user can have multiple cards + @OneToMany(mappedBy = "aquaNetUser", cascade = [CascadeType.ALL]) + var cards: MutableList = mutableListOf() +) : Serializable + +@Repository("AquaNetUserRepository") +interface AquaNetUserRepo : JpaRepository { + fun existsByEmail(email: String): Boolean +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/general/model/Card.java b/src/main/java/icu/samnyan/aqua/sega/general/model/Card.java index 5ea1adb1..a4fca4a1 100644 --- a/src/main/java/icu/samnyan/aqua/sega/general/model/Card.java +++ b/src/main/java/icu/samnyan/aqua/sega/general/model/Card.java @@ -1,10 +1,12 @@ package icu.samnyan.aqua.sega.general.model; +import icu.samnyan.aqua.net.db.AquaNetUser; +import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import jakarta.persistence.*; +import java.io.Serial; import java.io.Serializable; import java.time.LocalDateTime; @@ -18,6 +20,7 @@ import java.time.LocalDateTime; @NoArgsConstructor public class Card implements Serializable { + @Serial private static final long serialVersionUID = 1L; @Id @@ -38,4 +41,8 @@ public class Card implements Serializable { @Column(name = "access_time") private LocalDateTime accessTime; + // Defines the AquaNet user that this card is bound to + @ManyToOne + @JoinColumn(name = "net_user_id") + private AquaNetUser aquaUser; }