-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathSiteUser.java
More file actions
104 lines (85 loc) · 3.13 KB
/
SiteUser.java
File metadata and controls
104 lines (85 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package com.example.solidconnection.siteuser.domain;
import com.example.solidconnection.comment.domain.Comment;
import com.example.solidconnection.post.domain.Post;
import com.example.solidconnection.post.domain.PostLike;
import com.example.solidconnection.score.domain.GpaScore;
import com.example.solidconnection.score.domain.LanguageTestScore;
import com.example.solidconnection.type.Gender;
import com.example.solidconnection.type.PreparationStatus;
import com.example.solidconnection.type.Role;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
@AllArgsConstructor
public class SiteUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 100)
private String email;
@Setter
@Column(nullable = false, length = 100)
private String nickname;
@Setter
@Column(length = 500)
private String profileImageUrl;
@Column(nullable = false, length = 20)
private String birth;
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private PreparationStatus preparationStage;
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private Role role;
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private Gender gender;
@Setter
private LocalDateTime nicknameModifiedAt;
@Setter
private LocalDate quitedAt;
@OneToMany(mappedBy = "siteUser", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Post> postList = new ArrayList<>();
@OneToMany(mappedBy = "siteUser", cascade = CascadeType.ALL)
private List<Comment> commentList = new ArrayList<>();
@OneToMany(mappedBy = "siteUser", cascade = CascadeType.ALL, orphanRemoval = true)
private List<PostLike> postLikeList = new ArrayList<>();
@OneToMany(mappedBy = "siteUser", cascade = CascadeType.ALL, orphanRemoval = true)
private List<LanguageTestScore> languageTestScoreList = new ArrayList<>();
@OneToMany(mappedBy = "siteUser", cascade = CascadeType.ALL, orphanRemoval = true)
private List<GpaScore> gpaScoreList = new ArrayList<>();
public SiteUser(
String email,
String nickname,
String profileImageUrl,
String birth,
PreparationStatus preparationStage,
Role role,
Gender gender) {
this.email = email;
this.nickname = nickname;
this.profileImageUrl = profileImageUrl;
this.birth = birth;
this.preparationStage = preparationStage;
this.role = role;
this.gender = gender;
}
}