diff --git a/src/main/java/com/sequence/anonymous/college/domain/College.java b/src/main/java/com/sequence/anonymous/college/domain/College.java new file mode 100644 index 0000000..fff958c --- /dev/null +++ b/src/main/java/com/sequence/anonymous/college/domain/College.java @@ -0,0 +1,18 @@ +package com.sequence.anonymous.college.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class College { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "college_id") + private static Long id; + + @Column + private String name; + + +} diff --git a/src/main/java/com/sequence/anonymous/college/domain/Department.java b/src/main/java/com/sequence/anonymous/college/domain/Department.java new file mode 100644 index 0000000..581f5a6 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/college/domain/Department.java @@ -0,0 +1,20 @@ +package com.sequence.anonymous.college.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class Department { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "department_id") + private static Long id; + + @OneToOne + @Column(name = "college_id") + private Long collegeId; + + @Column + private String name; +} diff --git a/src/main/java/com/sequence/anonymous/common/BaseEntity.java b/src/main/java/com/sequence/anonymous/common/BaseEntity.java new file mode 100644 index 0000000..8b6cecb --- /dev/null +++ b/src/main/java/com/sequence/anonymous/common/BaseEntity.java @@ -0,0 +1,22 @@ +package com.sequence.anonymous.common; + +import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.MappedSuperclass; +import lombok.Getter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@Getter @EntityListeners(AuditingEntityListener.class) +@MappedSuperclass +public class BaseEntity { + @CreatedDate + @Column(updatable = false) + private LocalDateTime createdAt; + + @LastModifiedDate + private LocalDateTime updatedAt; +} diff --git a/src/main/java/com/sequence/anonymous/invite/domain/Invite.java b/src/main/java/com/sequence/anonymous/invite/domain/Invite.java new file mode 100644 index 0000000..de3929b --- /dev/null +++ b/src/main/java/com/sequence/anonymous/invite/domain/Invite.java @@ -0,0 +1,27 @@ +package com.sequence.anonymous.invite.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class Invite { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "invite_id") + private static Long id; + + @OneToOne + @JoinColumn(name = "inviter_id") + private Long inviter; + + @OneToMany + @JoinColumn(name = "invitee_id") + private Long invitee; + + @Column + private InviteStatus status; + + @Column + private InviteKind kind; +} diff --git a/src/main/java/com/sequence/anonymous/invite/domain/InviteKind.java b/src/main/java/com/sequence/anonymous/invite/domain/InviteKind.java new file mode 100644 index 0000000..0a159a1 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/invite/domain/InviteKind.java @@ -0,0 +1,6 @@ +package com.sequence.anonymous.invite.domain; + +public enum InviteKind { + MATCH_POST, + FRIEND +} diff --git a/src/main/java/com/sequence/anonymous/invite/domain/InviteStatus.java b/src/main/java/com/sequence/anonymous/invite/domain/InviteStatus.java new file mode 100644 index 0000000..499f99c --- /dev/null +++ b/src/main/java/com/sequence/anonymous/invite/domain/InviteStatus.java @@ -0,0 +1,6 @@ +package com.sequence.anonymous.invite.domain; + +public enum InviteStatus { + WAIT, + DONE +} diff --git a/src/main/java/com/sequence/anonymous/post/domain/Chat.java b/src/main/java/com/sequence/anonymous/post/domain/Chat.java new file mode 100644 index 0000000..1c4b454 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/post/domain/Chat.java @@ -0,0 +1,22 @@ +package com.sequence.anonymous.post.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +import java.util.UUID; + +@Entity +@Getter +public class Chat { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "chat_id") + private static Long id; + + @Column + private UUID chatIdentifier; + + public Chat(UUID chatIdentifier) { + this.chatIdentifier = chatIdentifier; + } +} diff --git a/src/main/java/com/sequence/anonymous/post/domain/MatchPost.java b/src/main/java/com/sequence/anonymous/post/domain/MatchPost.java new file mode 100644 index 0000000..65e9a8e --- /dev/null +++ b/src/main/java/com/sequence/anonymous/post/domain/MatchPost.java @@ -0,0 +1,45 @@ +package com.sequence.anonymous.post.domain; + +import com.google.common.base.Preconditions; +import com.sequence.anonymous.common.BaseEntity; +import jakarta.persistence.*; +import lombok.Getter; + +import java.time.LocalDateTime; + +@Entity +@Getter +public class MatchPost extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "matchPost_id") + private Long id; + + @Column(name = "title", nullable = false) + private String title; + + @Column(name = "title", nullable = false) + private String introduce; + + @Column(name = "title", nullable = false) + private String appeal; + + @Column + @Enumerated(EnumType.STRING) + private MatchPostStatus status; + + protected MatchPost() { + } + + public MatchPost(Long id, String title, String introduce, String appeal, MatchPostStatus status) { + Preconditions.checkArgument(title != null, "title must be provided."); + Preconditions.checkArgument(introduce != null, "introduce must be provided."); + Preconditions.checkArgument(appeal != null, "appeal must be provided."); + + this.id = id; + this.title = title; + this.introduce = introduce; + this.appeal = appeal; + this.status = status; + } +} diff --git a/src/main/java/com/sequence/anonymous/post/domain/MatchPostStatus.java b/src/main/java/com/sequence/anonymous/post/domain/MatchPostStatus.java new file mode 100644 index 0000000..e225b01 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/post/domain/MatchPostStatus.java @@ -0,0 +1,7 @@ +package com.sequence.anonymous.post.domain; + +public enum MatchPostStatus { + RECRUIT, + DONE +} + diff --git a/src/main/java/com/sequence/anonymous/relation/domain/Relation.java b/src/main/java/com/sequence/anonymous/relation/domain/Relation.java new file mode 100644 index 0000000..9873b19 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/relation/domain/Relation.java @@ -0,0 +1,24 @@ +package com.sequence.anonymous.relation.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class Relation { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "relation_id") + private static Long id; + + @OneToOne + @JoinColumn(name = "user1_id") + private Long user1Id; + + @OneToOne + @JoinColumn(name = "user2_id") + private Long user2Id; + + @Column + private RelationStatus status; +} diff --git a/src/main/java/com/sequence/anonymous/relation/domain/RelationStatus.java b/src/main/java/com/sequence/anonymous/relation/domain/RelationStatus.java new file mode 100644 index 0000000..9b50884 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/relation/domain/RelationStatus.java @@ -0,0 +1,6 @@ +package com.sequence.anonymous.relation.domain; + +public enum RelationStatus { + BAN, + FRIEND +} diff --git a/src/main/java/com/sequence/anonymous/tag/domain/Tag.java b/src/main/java/com/sequence/anonymous/tag/domain/Tag.java new file mode 100644 index 0000000..62225aa --- /dev/null +++ b/src/main/java/com/sequence/anonymous/tag/domain/Tag.java @@ -0,0 +1,18 @@ +package com.sequence.anonymous.tag.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class Tag { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "tag_id") + private static Long id; + + @Column + private String name; + + +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/Attachment.java b/src/main/java/com/sequence/anonymous/user/domain/Attachment.java new file mode 100644 index 0000000..81584be --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/Attachment.java @@ -0,0 +1,21 @@ +package com.sequence.anonymous.user.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class Attachment { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + @JoinColumn(name = "user_id") + private Long userId; + + @Column + @Enumerated + private FileType fileType; + +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/FileType.java b/src/main/java/com/sequence/anonymous/user/domain/FileType.java new file mode 100644 index 0000000..ca0fada --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/FileType.java @@ -0,0 +1,8 @@ +package com.sequence.anonymous.user.domain; + +public enum FileType { + MP4, + MP3, + PNG, + JPEG +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/Gender.java b/src/main/java/com/sequence/anonymous/user/domain/Gender.java new file mode 100644 index 0000000..235dd98 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/Gender.java @@ -0,0 +1,7 @@ +package com.sequence.anonymous.user.domain; + +public enum Gender { + + MALE, + FEMALE +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/Role.java b/src/main/java/com/sequence/anonymous/user/domain/Role.java index 3ba617a..de366c5 100644 --- a/src/main/java/com/sequence/anonymous/user/domain/Role.java +++ b/src/main/java/com/sequence/anonymous/user/domain/Role.java @@ -1,16 +1,7 @@ package com.sequence.anonymous.user.domain; public enum Role { - ROLE_USER("USER"), - ROLE_ADMIN("ADMIN"); - - private final String role; - - Role(String role) { - this.role = role; - } - - public String role() { - return role; - } + ROLE_USER, + ROLE_ADMIN } + diff --git a/src/main/java/com/sequence/anonymous/user/domain/User.java b/src/main/java/com/sequence/anonymous/user/domain/User.java index 50c88bc..3467b07 100644 --- a/src/main/java/com/sequence/anonymous/user/domain/User.java +++ b/src/main/java/com/sequence/anonymous/user/domain/User.java @@ -1,14 +1,7 @@ package com.sequence.anonymous.user.domain; import com.google.common.base.Preconditions; -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.validation.constraints.Email; +import jakarta.persistence.*; import lombok.Getter; @Entity @@ -17,7 +10,12 @@ public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; + @Column(name = "user_id") + private static Long id; + public Long getId() { + return id; + } + private String providerId; @@ -28,27 +26,68 @@ public class User { @Column(length = 40) private String email; + @OneToOne + @JoinColumn(name = "college_id") + private Long college; + + @OneToOne + @JoinColumn(name = "department_id") + private Long department; + + @Column(length = 20) + private String name; + + private Integer age; + + @Column(length = 10) + @Enumerated(EnumType.STRING) + private Gender gender; + @Column(length = 15) @Enumerated(EnumType.STRING) private Role role; + private Boolean withdrawal; + + private Boolean profileInitialized; + protected User() { } public User(String providerId, OAuth2Provider provider, String email) { - this(null, providerId, provider, email, Role.ROLE_USER); + this(null, providerId, provider, email, null, null, null, Role.ROLE_USER, false, false); } - - private User(Long id, String providerId, OAuth2Provider provider, String email, Role role) { + private User(Long id, String providerId, OAuth2Provider provider, String email, String name, Integer age, Gender gender, Role role, Boolean withdrawal, Boolean profileInitialized) { Preconditions.checkArgument(providerId != null, "providerId must be provided."); Preconditions.checkArgument(provider != null, "provider must be provided."); Preconditions.checkArgument(email != null, "email must be provided."); Preconditions.checkArgument(role != null, "role must be provided."); + Preconditions.checkArgument(withdrawal != null, "withdrawal must be provided."); + Preconditions.checkArgument(profileInitialized != null, "initialized must be provided."); this.id = id; this.providerId = providerId; this.provider = provider; + this.name = name; + this.age = age; + this.gender = gender; this.email = email; this.role = role; + this.withdrawal = withdrawal; + this.profileInitialized = profileInitialized; } -} + + public void initializeProfile(String name, Integer age, Gender gender) { + Preconditions.checkArgument(name != null, "name must be provided."); + Preconditions.checkArgument(age != null, "age must be provided."); + Preconditions.checkArgument(gender != null, "gender must be provided."); + + this.name = name; + this.age = age; + this.gender = gender; + + this.profileInitialized = true; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/sequence/anonymous/user/domain/UserChat.java b/src/main/java/com/sequence/anonymous/user/domain/UserChat.java new file mode 100644 index 0000000..8b86a39 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/UserChat.java @@ -0,0 +1,26 @@ +package com.sequence.anonymous.user.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class UserChat { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "userChat_id") + private static Long id; + + @OneToOne + @JoinColumn(name = "user_id") + private Long userId; + + @OneToMany + @JoinColumn(name = "chat_id") + private Long chatId; + + public UserChat(Long userId, Long chatId) { + this.userId = userId; + this.chatId = chatId; + } +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/UserMatchPost.java b/src/main/java/com/sequence/anonymous/user/domain/UserMatchPost.java new file mode 100644 index 0000000..02b825f --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/UserMatchPost.java @@ -0,0 +1,31 @@ +package com.sequence.anonymous.user.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class UserMatchPost { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "userMatchPost_id") + private static Long id; + + @OneToMany + @Column(name = "matchPost_id") + private Long matchPostId; + + @OneToOne + @JoinColumn(name = "user_id") + private Long userId; + + @Column + @Enumerated(EnumType.STRING) + private UserMatchPostRole role; + + public UserMatchPost(Long matchPostId, Long userId, UserMatchPostRole role) { + this.matchPostId = matchPostId; + this.userId = userId; + this.role = role; + } +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/UserMatchPostRole.java b/src/main/java/com/sequence/anonymous/user/domain/UserMatchPostRole.java new file mode 100644 index 0000000..ec88efb --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/UserMatchPostRole.java @@ -0,0 +1,6 @@ +package com.sequence.anonymous.user.domain; + +public enum UserMatchPostRole { + OWNER, + MEMBER +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/UserTag.java b/src/main/java/com/sequence/anonymous/user/domain/UserTag.java new file mode 100644 index 0000000..3aa6c94 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/UserTag.java @@ -0,0 +1,26 @@ +package com.sequence.anonymous.user.domain; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class UserTag { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "userTag_id") + private static Long id; + + @OneToOne + @JoinColumn(name = "user_id") + private Long user; + + @OneToMany + @JoinColumn(name = "tag_id") + private Long tagId; + + public UserTag(Long user, Long tagId) { + this.user = user; + this.tagId = tagId; + } +} diff --git a/src/test/java/com/sequence/anonymous/AnonymousApplicationTests.java b/src/test/java/com/sequence/anonymous/AnonymousApplicationTests.java deleted file mode 100644 index e82b867..0000000 --- a/src/test/java/com/sequence/anonymous/AnonymousApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.sequence.anonymous; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class AnonymousApplicationTests { - - @Test - void contextLoads() { - } - -}