diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Admin.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Admin.java index ddacacc..6bc012f 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Admin.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Admin.java @@ -2,6 +2,7 @@ package hackathon.FrisbYEE.jpa.metier; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -20,6 +21,9 @@ public class Admin { private Long id; private String name; + @OneToOne(mappedBy = "admin") + private User user; + public Admin(String name){ this.name = name; } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Athlete.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Athlete.java index 42235e4..3ca7460 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Athlete.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Athlete.java @@ -3,6 +3,7 @@ package hackathon.FrisbYEE.jpa.metier; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.ManyToMany; +import jakarta.persistence.OneToOne; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -32,6 +33,9 @@ public class Athlete { @ManyToMany(mappedBy = "athletes") private List sessions = new ArrayList<>(); // plusieurs sessions sont possibles + @OneToOne(mappedBy = "athlete") + private User user; + public Athlete(String name){ this.name = name; } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Coach.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Coach.java index 6294ab9..ed8f2bd 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Coach.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Coach.java @@ -3,6 +3,7 @@ package hackathon.FrisbYEE.jpa.metier; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.OneToMany; +import jakarta.persistence.OneToOne; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -26,6 +27,9 @@ public class Coach { @OneToMany(mappedBy = "coach") private List sessions = new ArrayList<>(); // Un coach peut avoir plusieurs sessions + @OneToOne(mappedBy = "coach") + private User user; + public Coach(String name){ this.name = name; } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Role.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Role.java new file mode 100644 index 0000000..dbdc97e --- /dev/null +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/Role.java @@ -0,0 +1,7 @@ +package hackathon.FrisbYEE.jpa.metier; + +public enum Role { + ADMIN, + COACH, + ATHLETE +} \ No newline at end of file diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/User.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/User.java new file mode 100644 index 0000000..2141d66 --- /dev/null +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/metier/User.java @@ -0,0 +1,61 @@ +package hackathon.FrisbYEE.jpa.metier; + +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import java.io.Serializable; +import jakarta.persistence.Access; +import jakarta.persistence.AccessType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.CascadeType; + +@Entity +@Getter @Setter @NoArgsConstructor +@Access(AccessType.FIELD) + +public class User implements Serializable { + + @Id + @GeneratedValue + private Long id; + @Column(unique = true, nullable = false) //pas possible d'avoir le même nom + private String name; + @Column (nullable = false) + private String motDePasse; + private String email; + + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private Role role; + + @OneToOne(cascade = CascadeType.ALL) + private Coach coach; + + @OneToOne(cascade = CascadeType.ALL) + private Athlete athlete; + + @OneToOne(cascade = CascadeType.ALL) + private Admin admin; + + public User(String name) { + this.name = name; + } + + public User(String name, String motDePasse, String email, Role role) { + this.name = name; + this.motDePasse = motDePasse; + this.email = email; + this.role = role; + } + + @Override + public String toString() { + return "User [id=" + id + " , name=" + name + "]"; + } +}