diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md index 00e02ab..4eb6275 100644 --- a/.github/ISSUE_TEMPLATE/feature.md +++ b/.github/ISSUE_TEMPLATE/feature.md @@ -1,5 +1,5 @@ --- -name: featrue +name: feature about: Suggest an idea for this project title: '[feat] #[issue number] [issue name]' labels: '' diff --git a/build.gradle b/build.gradle index dc174e1..37e120c 100644 --- a/build.gradle +++ b/build.gradle @@ -36,7 +36,6 @@ ext { dependencies { // Spring implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-validation' @@ -46,8 +45,8 @@ dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' - // Mysql - runtimeOnly 'com.mysql:mysql-connector-j' + // MariaDB + implementation 'org.mariadb.jdbc:mariadb-java-client' // JWT implementation 'io.jsonwebtoken:jjwt-api:0.12.6' diff --git a/src/main/java/com/leets/xcellentbe/domain/chatroom/domain/Chatroom.java b/src/main/java/com/leets/xcellentbe/domain/chatroom/domain/Chatroom.java new file mode 100644 index 0000000..2e901d0 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/chatroom/domain/Chatroom.java @@ -0,0 +1,30 @@ +package com.leets.xcellentbe.domain.chatroom.domain; + +import java.util.UUID; + +import com.leets.xcellentbe.domain.shared.BaseTimeEntity; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Chatroom extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID ChatroomId; + + @Column(length = 50) + private String lastParticipantName; + + @Column + private String lastMessage; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/chatroom/domain/controller/ChatroomController.java b/src/main/java/com/leets/xcellentbe/domain/chatroom/domain/controller/ChatroomController.java new file mode 100644 index 0000000..092b246 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/chatroom/domain/controller/ChatroomController.java @@ -0,0 +1,12 @@ +package com.leets.xcellentbe.domain.chatroom.domain.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequestMapping("/chatroom") +@RequiredArgsConstructor +public class ChatroomController { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/chatroom/domain/repository/ChatroomRepository.java b/src/main/java/com/leets/xcellentbe/domain/chatroom/domain/repository/ChatroomRepository.java new file mode 100644 index 0000000..02e4180 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/chatroom/domain/repository/ChatroomRepository.java @@ -0,0 +1,10 @@ +package com.leets.xcellentbe.domain.chatroom.domain.repository; + +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.leets.xcellentbe.domain.chatroom.domain.Chatroom; + +public interface ChatroomRepository extends JpaRepository { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/comment/domain/Comment.java b/src/main/java/com/leets/xcellentbe/domain/comment/domain/Comment.java new file mode 100644 index 0000000..4b79e02 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/comment/domain/Comment.java @@ -0,0 +1,48 @@ +package com.leets.xcellentbe.domain.comment.domain; + +import java.util.UUID; + +import com.leets.xcellentbe.domain.post.domain.Post; +import com.leets.xcellentbe.domain.shared.BaseTimeEntity; +import com.leets.xcellentbe.domain.shared.DeletedStatus; +import com.leets.xcellentbe.domain.user.domain.User; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Comment extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID CommentId; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "writer_id") + private User writer; + + @Column(length = 50) + private String content; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id") + private Post post; + + @NotNull + @Column + private DeletedStatus deletedStatus; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/comment/domain/repository/CommentRepository.java b/src/main/java/com/leets/xcellentbe/domain/comment/domain/repository/CommentRepository.java new file mode 100644 index 0000000..f248ab1 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/comment/domain/repository/CommentRepository.java @@ -0,0 +1,10 @@ +package com.leets.xcellentbe.domain.comment.domain.repository; + +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.leets.xcellentbe.domain.comment.domain.Comment; + +public interface CommentRepository extends JpaRepository { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/dm/domain/DM.java b/src/main/java/com/leets/xcellentbe/domain/dm/domain/DM.java new file mode 100644 index 0000000..e90ece8 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/dm/domain/DM.java @@ -0,0 +1,49 @@ +package com.leets.xcellentbe.domain.dm.domain; + +import java.util.UUID; + +import com.leets.xcellentbe.domain.chatroom.domain.Chatroom; +import com.leets.xcellentbe.domain.shared.BaseTimeEntity; +import com.leets.xcellentbe.domain.shared.DeletedStatus; +import com.leets.xcellentbe.domain.user.domain.User; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class DM extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID DMId; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "chatroom_id") + private Chatroom chatRoom; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "participant_id") + private User participant; + + @NotNull + @Column + private String message; + + @NotNull + @Column + private DeletedStatus deletedStatus; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/dm/domain/repository/DMRepository.java b/src/main/java/com/leets/xcellentbe/domain/dm/domain/repository/DMRepository.java new file mode 100644 index 0000000..2ca8980 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/dm/domain/repository/DMRepository.java @@ -0,0 +1,10 @@ +package com.leets.xcellentbe.domain.dm.domain.repository; + +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.leets.xcellentbe.domain.dm.domain.DM; + +public interface DMRepository extends JpaRepository { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/follow/domain/Follow.java b/src/main/java/com/leets/xcellentbe/domain/follow/domain/Follow.java new file mode 100644 index 0000000..f325b5e --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/follow/domain/Follow.java @@ -0,0 +1,35 @@ +package com.leets.xcellentbe.domain.follow.domain; + +import com.leets.xcellentbe.domain.user.domain.User; + +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Follow { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long FollowId; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "following_id") + private User following; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "follower_id") + private User follower; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/follow/domain/repository/FollowRepository.java b/src/main/java/com/leets/xcellentbe/domain/follow/domain/repository/FollowRepository.java new file mode 100644 index 0000000..45920fe --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/follow/domain/repository/FollowRepository.java @@ -0,0 +1,8 @@ +package com.leets.xcellentbe.domain.follow.domain.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.leets.xcellentbe.domain.follow.domain.Follow; + +public interface FollowRepository extends JpaRepository { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/hashtag/domain/Hashtag.java b/src/main/java/com/leets/xcellentbe/domain/hashtag/domain/Hashtag.java new file mode 100644 index 0000000..f4bd29e --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/hashtag/domain/Hashtag.java @@ -0,0 +1,28 @@ +package com.leets.xcellentbe.domain.hashtag.domain; + +import java.util.UUID; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Hashtag { + + @Id + @Column(name = "hashtag_id") + @GeneratedValue(strategy = GenerationType.UUID) + private UUID HashtagId; + + @NotNull + @Column(length = 30) + private String content; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/hashtag/domain/repository/HashtagRepository.java b/src/main/java/com/leets/xcellentbe/domain/hashtag/domain/repository/HashtagRepository.java new file mode 100644 index 0000000..0e5b827 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/hashtag/domain/repository/HashtagRepository.java @@ -0,0 +1,8 @@ +package com.leets.xcellentbe.domain.hashtag.domain.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.leets.xcellentbe.domain.hashtag.domain.Hashtag; + +public interface HashtagRepository extends JpaRepository { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/post/controller/PostController.java b/src/main/java/com/leets/xcellentbe/domain/post/controller/PostController.java new file mode 100644 index 0000000..e4cbca7 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/post/controller/PostController.java @@ -0,0 +1,12 @@ +package com.leets.xcellentbe.domain.post.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequestMapping("/post") +@RequiredArgsConstructor +public class PostController { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/post/domain/Post.java b/src/main/java/com/leets/xcellentbe/domain/post/domain/Post.java new file mode 100644 index 0000000..4fa6311 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/post/domain/Post.java @@ -0,0 +1,57 @@ +package com.leets.xcellentbe.domain.post.domain; + +import java.util.List; +import java.util.UUID; + +import com.leets.xcellentbe.domain.hashtag.domain.Hashtag; +import com.leets.xcellentbe.domain.shared.DeletedStatus; +import com.leets.xcellentbe.domain.user.domain.User; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Post { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID PostId; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "writer_id") + private User writer; + + @NotNull + @Column + private String content; + + @NotNull + @Column + private DeletedStatus deletedStatus; + + @NotNull + @Column + private Boolean isPinned; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "repost_id") + private Post rePost; + + @OneToMany(fetch = FetchType.LAZY) + @JoinColumn(name = "hashtag_id") + private List hashtags; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/post/domain/repository/PostRepository.java b/src/main/java/com/leets/xcellentbe/domain/post/domain/repository/PostRepository.java new file mode 100644 index 0000000..c90b367 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/post/domain/repository/PostRepository.java @@ -0,0 +1,10 @@ +package com.leets.xcellentbe.domain.post.domain.repository; + +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.leets.xcellentbe.domain.post.domain.Post; + +public interface PostRepository extends JpaRepository { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/postLike/domain/PostLike.java b/src/main/java/com/leets/xcellentbe/domain/postLike/domain/PostLike.java new file mode 100644 index 0000000..2f788cf --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/postLike/domain/PostLike.java @@ -0,0 +1,45 @@ +package com.leets.xcellentbe.domain.postLike.domain; + +import java.util.UUID; + +import com.leets.xcellentbe.domain.post.domain.Post; +import com.leets.xcellentbe.domain.shared.BaseTimeEntity; +import com.leets.xcellentbe.domain.shared.DeletedStatus; +import com.leets.xcellentbe.domain.user.domain.User; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PostLike extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID PostLikeId; + + @NotNull + @Column + private DeletedStatus deletedStatus; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id") + private Post post; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + private User user; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/postLike/domain/repository/PostLikeRepository.java b/src/main/java/com/leets/xcellentbe/domain/postLike/domain/repository/PostLikeRepository.java new file mode 100644 index 0000000..efd049c --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/postLike/domain/repository/PostLikeRepository.java @@ -0,0 +1,10 @@ +package com.leets.xcellentbe.domain.postLike.domain.repository; + +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.leets.xcellentbe.domain.postLike.domain.PostLike; + +public interface PostLikeRepository extends JpaRepository { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/postMedia/domain/PostMedia.java b/src/main/java/com/leets/xcellentbe/domain/postMedia/domain/PostMedia.java new file mode 100644 index 0000000..e4af3a9 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/postMedia/domain/PostMedia.java @@ -0,0 +1,38 @@ +package com.leets.xcellentbe.domain.postMedia.domain; + +import java.util.UUID; + +import com.leets.xcellentbe.domain.post.domain.Post; +import com.leets.xcellentbe.domain.shared.BaseTimeEntity; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PostMedia extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID PostMediaId; + + @NotNull + @Column + private String filePath; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id") + private Post post; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/postMedia/domain/repository/PostMediaRepository.java b/src/main/java/com/leets/xcellentbe/domain/postMedia/domain/repository/PostMediaRepository.java new file mode 100644 index 0000000..b653fc8 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/postMedia/domain/repository/PostMediaRepository.java @@ -0,0 +1,10 @@ +package com.leets.xcellentbe.domain.postMedia.domain.repository; + +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.leets.xcellentbe.domain.postMedia.domain.PostMedia; + +public interface PostMediaRepository extends JpaRepository { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/shared/BaseTimeEntity.java b/src/main/java/com/leets/xcellentbe/domain/shared/BaseTimeEntity.java new file mode 100644 index 0000000..c2a6de0 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/shared/BaseTimeEntity.java @@ -0,0 +1,35 @@ +package com.leets.xcellentbe.domain.shared; + +import java.time.LocalDateTime; +import java.time.ZoneId; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.MappedSuperclass; +import lombok.Getter; + +@Getter +@EntityListeners(AuditingEntityListener.class) +@MappedSuperclass +public class BaseTimeEntity { + + @CreatedDate + @Column(updatable = false) + private LocalDateTime createdAt; + + @LastModifiedDate + @Column + private LocalDateTime updatedAt; + + public LocalDateTime getCreatedAt() { + return createdAt.atZone(ZoneId.of("Asia/Seoul")).toLocalDateTime(); + } + + public LocalDateTime getUpdatedAt() { + return updatedAt.atZone(ZoneId.of("Asia/Seoul")).toLocalDateTime(); + } +} diff --git a/src/main/java/com/leets/xcellentbe/domain/shared/DeletedStatus.java b/src/main/java/com/leets/xcellentbe/domain/shared/DeletedStatus.java new file mode 100644 index 0000000..290dfa7 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/shared/DeletedStatus.java @@ -0,0 +1,13 @@ +package com.leets.xcellentbe.domain.shared; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum DeletedStatus { + DELETED("DELETED"), + NOT_DELETED("NOT_DELETED"); + + private final String userStatus; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/shared/UserStatus.java b/src/main/java/com/leets/xcellentbe/domain/shared/UserStatus.java new file mode 100644 index 0000000..0872d2e --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/shared/UserStatus.java @@ -0,0 +1,14 @@ +package com.leets.xcellentbe.domain.shared; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum UserStatus { + ACTIVE("ACTIVE"), + INACTIVE("INACTIVE"), + DELETED("DELETED"); + + private final String userStatus; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/user/controller/UserController.java b/src/main/java/com/leets/xcellentbe/domain/user/controller/UserController.java new file mode 100644 index 0000000..3503484 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/user/controller/UserController.java @@ -0,0 +1,12 @@ +package com.leets.xcellentbe.domain.user.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequestMapping("/user") +@RequiredArgsConstructor +public class UserController { +} diff --git a/src/main/java/com/leets/xcellentbe/domain/user/domain/User.java b/src/main/java/com/leets/xcellentbe/domain/user/domain/User.java new file mode 100644 index 0000000..48c3d21 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/user/domain/User.java @@ -0,0 +1,67 @@ +package com.leets.xcellentbe.domain.user.domain; + +import java.time.LocalDateTime; + +import com.leets.xcellentbe.domain.shared.BaseTimeEntity; +import com.leets.xcellentbe.domain.shared.UserStatus; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity(name = "users") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class User extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long userId; + + @NotNull + @Column + private String customId; + + @NotNull + @Column(length = 100) + private String username; + + private String password; + + @Column + private String profileImageUrl; + + @Column + private String backgroundProfileImageUrl; + + private String refreshToken; + + @NotNull + @Column(length = 50) + private String email; + + @Column(length = 20) + private String phoneNumber; + + @Column + private LocalDateTime inactiveDate; + + @Column + private String description; + + @Column + private String websiteUrl; + + @Column(length = 100) + private String location; + + @NotNull + @Column + private UserStatus userStatus; +} diff --git a/src/main/java/com/leets/xcellentbe/domain/user/domain/repository/UserRepository.java b/src/main/java/com/leets/xcellentbe/domain/user/domain/repository/UserRepository.java new file mode 100644 index 0000000..a676327 --- /dev/null +++ b/src/main/java/com/leets/xcellentbe/domain/user/domain/repository/UserRepository.java @@ -0,0 +1,8 @@ +package com.leets.xcellentbe.domain.user.domain.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.leets.xcellentbe.domain.user.domain.User; + +public interface UserRepository extends JpaRepository { +}