diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..b9d18bf --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 7a1ccc5..9045e91 100644 --- a/build.gradle +++ b/build.gradle @@ -31,8 +31,8 @@ dependencies { implementation 'org.apache.commons:commons-lang3:3.12.0' implementation 'commons-io:commons-io:2.11.0' implementation 'com.auth0:java-jwt:4.3.0' - implementation 'org.springdoc:springdoc-openapi-starter-common:2.0.2' - implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' + implementation 'org.springdoc:springdoc-openapi-starter-common:2.0.4' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.mysql:mysql-connector-j' diff --git a/logs/spring.log.2023-08-30.0.gz b/logs/spring.log.2023-08-30.0.gz new file mode 100644 index 0000000..e239b86 Binary files /dev/null and b/logs/spring.log.2023-08-30.0.gz differ diff --git a/src/main/java/com/sequence/anonymous/security/CustomOAuth2User.java b/src/main/java/com/sequence/anonymous/security/CustomOAuth2User.java index 2afe54e..e715a95 100644 --- a/src/main/java/com/sequence/anonymous/security/CustomOAuth2User.java +++ b/src/main/java/com/sequence/anonymous/security/CustomOAuth2User.java @@ -1,7 +1,7 @@ package com.sequence.anonymous.security; import com.google.common.base.Preconditions; -import com.sequence.anonymous.user.domain.Role; +import com.sequence.anonymous.user.domain.user.Role; import java.io.Serializable; import java.util.Collection; import java.util.Map; diff --git a/src/main/java/com/sequence/anonymous/security/CustomOidcUser.java b/src/main/java/com/sequence/anonymous/security/CustomOidcUser.java index 9da0223..7be2202 100644 --- a/src/main/java/com/sequence/anonymous/security/CustomOidcUser.java +++ b/src/main/java/com/sequence/anonymous/security/CustomOidcUser.java @@ -1,6 +1,6 @@ package com.sequence.anonymous.security; -import com.sequence.anonymous.user.domain.Role; +import com.sequence.anonymous.user.domain.user.Role; import java.util.Map; import org.springframework.security.oauth2.core.oidc.OidcIdToken; import org.springframework.security.oauth2.core.oidc.OidcUserInfo; diff --git a/src/main/java/com/sequence/anonymous/security/service/CustomOAuth2UserService.java b/src/main/java/com/sequence/anonymous/security/service/CustomOAuth2UserService.java index 3648270..edee9b4 100644 --- a/src/main/java/com/sequence/anonymous/security/service/CustomOAuth2UserService.java +++ b/src/main/java/com/sequence/anonymous/security/service/CustomOAuth2UserService.java @@ -4,7 +4,7 @@ import com.sequence.anonymous.security.CustomOAuth2UserInfoFactory; import com.sequence.anonymous.security.userinfo.CustomOAuth2UserInfo; import com.sequence.anonymous.user.domain.OAuth2Provider; -import com.sequence.anonymous.user.domain.User; +import com.sequence.anonymous.user.domain.user.User; import com.sequence.anonymous.user.domain.repository.UserRepository; import java.util.Map; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sequence/anonymous/security/service/CustomOidcUserService.java b/src/main/java/com/sequence/anonymous/security/service/CustomOidcUserService.java index 003fa31..53964f7 100644 --- a/src/main/java/com/sequence/anonymous/security/service/CustomOidcUserService.java +++ b/src/main/java/com/sequence/anonymous/security/service/CustomOidcUserService.java @@ -4,7 +4,7 @@ import com.sequence.anonymous.security.CustomOidcUser; import com.sequence.anonymous.security.userinfo.CustomOAuth2UserInfo; import com.sequence.anonymous.user.domain.OAuth2Provider; -import com.sequence.anonymous.user.domain.User; +import com.sequence.anonymous.user.domain.user.User; import com.sequence.anonymous.user.domain.repository.UserRepository; import java.util.Map; import lombok.RequiredArgsConstructor; 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..0648e37 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/Attachment.java @@ -0,0 +1,46 @@ +package com.sequence.anonymous.user.domain; + +import com.google.common.base.Preconditions; +import com.sequence.anonymous.user.domain.user.User; +import jakarta.persistence.*; +import lombok.Getter; + +@Getter @Entity +public class Attachment { + + @Id + @Column(name = "attachment_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + + private String name; + + @Enumerated(EnumType.STRING) + private FileType type; + + protected Attachment(){ + + } + + public Attachment(User user, String name, FileType type) { + this.user = user; + this.name = name; + this.type = type; + } + + private Attachment(Long id, User user, String name, FileType type){ + Preconditions.checkArgument(user != null, "user must be provided"); + Preconditions.checkArgument(type != null, "filetype must be provided"); + + this.id = id; + this.user = user; + this.name = name; + this.type = type; + + } + + +} 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..1d2e673 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/FileType.java @@ -0,0 +1,5 @@ +package com.sequence.anonymous.user.domain; + +public enum FileType { + MP4, MP3, PNG, JPEG +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/User.java b/src/main/java/com/sequence/anonymous/user/domain/User.java deleted file mode 100644 index 50c88bc..0000000 --- a/src/main/java/com/sequence/anonymous/user/domain/User.java +++ /dev/null @@ -1,54 +0,0 @@ -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 lombok.Getter; - -@Entity -@Getter -public class User { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - private String providerId; - - @Column(length = 10) - @Enumerated(EnumType.STRING) - private OAuth2Provider provider; - - @Column(length = 40) - private String email; - - @Column(length = 15) - @Enumerated(EnumType.STRING) - private Role role; - - protected User() { - } - - public User(String providerId, OAuth2Provider provider, String email) { - this(null, providerId, provider, email, Role.ROLE_USER); - } - - private User(Long id, String providerId, OAuth2Provider provider, String email, Role role) { - 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."); - - this.id = id; - this.providerId = providerId; - this.provider = provider; - this.email = email; - this.role = role; - } -} diff --git a/src/main/java/com/sequence/anonymous/user/domain/UserRelation.java b/src/main/java/com/sequence/anonymous/user/domain/UserRelation.java new file mode 100644 index 0000000..be7db70 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/UserRelation.java @@ -0,0 +1,34 @@ +package com.sequence.anonymous.user.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import lombok.Getter; + +@Entity @Getter +public class UserRelation { + + @Id + @Column(name = "userRelation_id") + private Long id; + + private Long user; + private Long relation; + + // RelationKind ..? + + protected UserRelation(){ + + } + + public UserRelation(Long user, Long relation) { + this.user = user; + this.relation = relation; + } + + private UserRelation(Long id, Long user, Long relation){ + this.id = id; + this.user = user; + this.relation = relation; + } +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/chat/Chat.java b/src/main/java/com/sequence/anonymous/user/domain/chat/Chat.java new file mode 100644 index 0000000..8b75c62 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/chat/Chat.java @@ -0,0 +1,35 @@ +package com.sequence.anonymous.user.domain.chat; + +import jakarta.persistence.*; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@Entity @Getter +public class Chat { + + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "chat_id") + private Long id; + + @OneToMany + private List userChat = new ArrayList<>(); + + @Column + private UUID chatIdentifier; + + protected Chat(){ + + } + public Chat(UUID chatIdentifier) { + this.chatIdentifier = chatIdentifier; + } + + private Chat(Long id, UUID chatIdentifier){ + this.id = id; + this.chatIdentifier = chatIdentifier; + } + +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/chat/UserChat.java b/src/main/java/com/sequence/anonymous/user/domain/chat/UserChat.java new file mode 100644 index 0000000..73fb712 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/chat/UserChat.java @@ -0,0 +1,23 @@ +package com.sequence.anonymous.user.domain.chat; + +import com.sequence.anonymous.user.domain.user.User; +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class UserChat { + + @Id + @Column(name = "userchat_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + + @ManyToOne + @JoinColumn(name = "chat_id") + private Chat chat; + +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/college/College.java b/src/main/java/com/sequence/anonymous/user/domain/college/College.java new file mode 100644 index 0000000..5d47f36 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/college/College.java @@ -0,0 +1,31 @@ +package com.sequence.anonymous.user.domain.college; + +import com.sequence.anonymous.user.domain.user.User; +import jakarta.persistence.*; + +import java.util.ArrayList; +import java.util.List; +import lombok.Getter; + +@Getter +@Entity +public class College { + + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "college_id") + private static Long id; + + @OneToMany + private List user = new ArrayList<>(); + + @OneToMany + private List department = new ArrayList<>(); + + @Column(name = "name") + private String name; + + @Column(name = "Locaton") + private String location; + + +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/college/Department.java b/src/main/java/com/sequence/anonymous/user/domain/college/Department.java new file mode 100644 index 0000000..736bad4 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/college/Department.java @@ -0,0 +1,28 @@ +package com.sequence.anonymous.user.domain.college; + +import com.sequence.anonymous.user.domain.user.User; +import jakarta.persistence.*; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +@Getter +@Entity +public class Department { + + @Id + @Column(name = "department_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "college_id") + private College college; + + @OneToMany + private List user = new ArrayList<>(); + + + private String name; + +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/invite/Invite.java b/src/main/java/com/sequence/anonymous/user/domain/invite/Invite.java new file mode 100644 index 0000000..bcf130b --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/invite/Invite.java @@ -0,0 +1,30 @@ +package com.sequence.anonymous.user.domain.invite; + +import com.sequence.anonymous.user.domain.user.User; +import jakarta.persistence.*; +import lombok.Getter; + +@Getter +@Entity +public class Invite { + + @Id + @Column(name = "invite_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "user_id") + @Column(name = "inviter") + private User inviter; + + @ManyToOne + @JoinColumn(name = "user_id") + @Column(name = "invitee") + private User invitee; + + @Enumerated(EnumType.STRING) + private InviteStatus status; + + @Enumerated(EnumType.STRING) + private InviteKind kind; +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/invite/InviteKind.java b/src/main/java/com/sequence/anonymous/user/domain/invite/InviteKind.java new file mode 100644 index 0000000..2fc8756 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/invite/InviteKind.java @@ -0,0 +1,5 @@ +package com.sequence.anonymous.user.domain.invite; + +public enum InviteKind { + MATCH_POST, FRIEND +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/invite/InviteStatus.java b/src/main/java/com/sequence/anonymous/user/domain/invite/InviteStatus.java new file mode 100644 index 0000000..109e82e --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/invite/InviteStatus.java @@ -0,0 +1,5 @@ +package com.sequence.anonymous.user.domain.invite; + +public enum InviteStatus { + WAIT, DONE +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/post/MatchPost.java b/src/main/java/com/sequence/anonymous/user/domain/post/MatchPost.java new file mode 100644 index 0000000..d01aa8b --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/post/MatchPost.java @@ -0,0 +1,33 @@ +package com.sequence.anonymous.user.domain.post; + +import jakarta.persistence.*; +import lombok.Getter; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +public class MatchPost { + + @Id + @Column(name = "matchpost_id") + private Long id; + + @OneToMany + private List usermatch_post = new ArrayList<>(); + + private String title; + + private String introdue; + + private String appeal; + + @Enumerated(EnumType.STRING) + private MatchPostStatus status; + + private LocalDateTime createdAt; + private LocalDateTime updatedAt; + +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/post/MatchPostStatus.java b/src/main/java/com/sequence/anonymous/user/domain/post/MatchPostStatus.java new file mode 100644 index 0000000..404c611 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/post/MatchPostStatus.java @@ -0,0 +1,5 @@ +package com.sequence.anonymous.user.domain.post; + +public enum MatchPostStatus { + RECRUIT, DONE +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/post/UserMatchPost.java b/src/main/java/com/sequence/anonymous/user/domain/post/UserMatchPost.java new file mode 100644 index 0000000..f5eed44 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/post/UserMatchPost.java @@ -0,0 +1,25 @@ +package com.sequence.anonymous.user.domain.post; + +import com.sequence.anonymous.user.domain.user.User; +import jakarta.persistence.*; +import lombok.Getter; + +@Entity @Getter +public class UserMatchPost { + + @Id + @Column(name = "userMatchPost_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "matchpost_id") + private MatchPost matchPost; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + + @Enumerated(EnumType.STRING) + private UserMatchPostRole role; + +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/post/UserMatchPostRole.java b/src/main/java/com/sequence/anonymous/user/domain/post/UserMatchPostRole.java new file mode 100644 index 0000000..89c970d --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/post/UserMatchPostRole.java @@ -0,0 +1,5 @@ +package com.sequence.anonymous.user.domain.post; + +public enum UserMatchPostRole { + OWNER +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/repository/UserRepository.java b/src/main/java/com/sequence/anonymous/user/domain/repository/UserRepository.java index 290c406..0edecb8 100644 --- a/src/main/java/com/sequence/anonymous/user/domain/repository/UserRepository.java +++ b/src/main/java/com/sequence/anonymous/user/domain/repository/UserRepository.java @@ -1,6 +1,6 @@ package com.sequence.anonymous.user.domain.repository; -import com.sequence.anonymous.user.domain.User; +import com.sequence.anonymous.user.domain.user.User; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/sequence/anonymous/user/domain/user/Gender.java b/src/main/java/com/sequence/anonymous/user/domain/user/Gender.java new file mode 100644 index 0000000..4bb2442 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/user/Gender.java @@ -0,0 +1,5 @@ +package com.sequence.anonymous.user.domain.user; + +public enum Gender { + FEMALE, MALE +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/Role.java b/src/main/java/com/sequence/anonymous/user/domain/user/Role.java similarity index 79% rename from src/main/java/com/sequence/anonymous/user/domain/Role.java rename to src/main/java/com/sequence/anonymous/user/domain/user/Role.java index 3ba617a..87f5bbd 100644 --- a/src/main/java/com/sequence/anonymous/user/domain/Role.java +++ b/src/main/java/com/sequence/anonymous/user/domain/user/Role.java @@ -1,4 +1,4 @@ -package com.sequence.anonymous.user.domain; +package com.sequence.anonymous.user.domain.user; public enum Role { ROLE_USER("USER"), diff --git a/src/main/java/com/sequence/anonymous/user/domain/user/Tag.java b/src/main/java/com/sequence/anonymous/user/domain/user/Tag.java new file mode 100644 index 0000000..b7967d2 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/user/Tag.java @@ -0,0 +1,38 @@ +package com.sequence.anonymous.user.domain.user; + +import com.sequence.anonymous.user.domain.user.UserTag; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +public class Tag { + + @Id + @Column(name = "tag_id") + private Long id; + + private String name; + + @OneToMany + private List usertag = new ArrayList<>(); + + protected Tag(){ + + } + + public Tag(String name) { + this.name = name; + } + + private Tag(Long id, String name){ + this.id = id; + this.name = name; + } +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/user/User.java b/src/main/java/com/sequence/anonymous/user/domain/user/User.java new file mode 100644 index 0000000..2299ad8 --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/user/User.java @@ -0,0 +1,102 @@ +package com.sequence.anonymous.user.domain.user; + +import com.google.common.base.Preconditions; +import com.sequence.anonymous.user.domain.*; +import com.sequence.anonymous.user.domain.chat.UserChat; +import com.sequence.anonymous.user.domain.college.College; +import com.sequence.anonymous.user.domain.college.Department; +import com.sequence.anonymous.user.domain.invite.Invite; +import com.sequence.anonymous.user.domain.post.UserMatchPost; +import jakarta.persistence.*; +import lombok.Getter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +public class User { + + @Id + @Column(name = "user_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + @JoinColumn(name = "college_id") + private College college; + + @ManyToOne + @JoinColumn(name = "department_id") + private Department department; + + @OneToMany + private List inviter = new ArrayList<>(); + + @OneToMany + private List invitee = new ArrayList<>(); + + @OneToMany + private List attachment = new ArrayList<>(); + + @OneToMany + private List userChat = new ArrayList<>(); + + private String name; + + private int age; + + @Enumerated(EnumType.STRING) + private Gender gender; + + private boolean withdrawl; + + @CreatedDate + @Column(updatable = false) + private LocalDateTime createdAt; + + @LastModifiedDate + private LocalDateTime updatedAt; + + private String providerId; + + @Column(length = 10) + @Enumerated(EnumType.STRING) + private OAuth2Provider provider; + + @Column(length = 40) + private String email; + + @Column(length = 15) + @Enumerated(EnumType.STRING) + private Role role; + + @OneToMany + private List usermatch_post= new ArrayList<>(); + + @OneToMany + private List usertag = new ArrayList<>(); + + protected User() { + } + + public User(String providerId, OAuth2Provider provider, String email) { + this(null, providerId, provider, email, Role.ROLE_USER); + } + + private User(Long id, String providerId, OAuth2Provider provider, String email, Role role) { + 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."); + + this.id = id; + this.providerId = providerId; + this.provider = provider; + this.email = email; + this.role = role; + } +} diff --git a/src/main/java/com/sequence/anonymous/user/domain/user/UserTag.java b/src/main/java/com/sequence/anonymous/user/domain/user/UserTag.java new file mode 100644 index 0000000..25b8afd --- /dev/null +++ b/src/main/java/com/sequence/anonymous/user/domain/user/UserTag.java @@ -0,0 +1,25 @@ +package com.sequence.anonymous.user.domain.user; + +import jakarta.persistence.*; +import lombok.Getter; + +@Entity +@Getter +public class UserTag { + + @Id + @Column(name = "usertag_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + + + @ManyToOne + @JoinColumn(name = "tag_id") + private Tag tag; + + + +} 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() { - } - -}