diff --git a/build.gradle b/build.gradle index a6b1689..7bdb570 100644 --- a/build.gradle +++ b/build.gradle @@ -40,6 +40,8 @@ dependencies { runtimeOnly 'org.postgresql:postgresql' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' + implementation 'io.hypersistence:hypersistence-utils-hibernate-63:3.9.3' + // Validation implementation 'org.springframework.boot:spring-boot-starter-validation' diff --git a/src/main/java/com/ftm/server/adapter/gateway/repository/UserRepository.java b/src/main/java/com/ftm/server/adapter/gateway/repository/UserRepository.java new file mode 100644 index 0000000..cc58a6c --- /dev/null +++ b/src/main/java/com/ftm/server/adapter/gateway/repository/UserRepository.java @@ -0,0 +1,6 @@ +package com.ftm.server.adapter.gateway.repository; + +import com.ftm.server.entity.entities.User; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UserRepository extends JpaRepository {} diff --git a/src/main/java/com/ftm/server/entity/entities/.gitkeep b/src/main/java/com/ftm/server/entity/entities/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/ftm/server/entity/entities/BaseEntity.java b/src/main/java/com/ftm/server/entity/entities/BaseEntity.java new file mode 100644 index 0000000..6cf28c7 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/BaseEntity.java @@ -0,0 +1,23 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +@MappedSuperclass +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public abstract class BaseEntity { + + @CreationTimestamp + @Column(name = "created_at", updatable = false) + private LocalDateTime createdAt; + + @UpdateTimestamp + @Column(name = "updated_at") + private LocalDateTime updatedAt; +} diff --git a/src/main/java/com/ftm/server/entity/entities/BeautyProduct.java b/src/main/java/com/ftm/server/entity/entities/BeautyProduct.java new file mode 100644 index 0000000..c69b96e --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/BeautyProduct.java @@ -0,0 +1,49 @@ +package com.ftm.server.entity.entities; + +import com.ftm.server.entity.enums.BeautyProductCategory; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "beauty_product") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class BeautyProduct extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "product_image_link") + private String productImageLink; + + @Enumerated(EnumType.STRING) + @Column(name = "beauty_product_category") + private BeautyProductCategory beautyProductCategory; + + private String brand; + private String name; + private Double rating; + + @Column(name = "product_page_link") + private String productPageLink; + + @Builder(access = AccessLevel.PRIVATE) + private BeautyProduct( + String productImageLink, + BeautyProductCategory beautyProductCategory, + String brand, + String name, + Double rating, + String productPageLink) { + this.productImageLink = productImageLink; + this.beautyProductCategory = beautyProductCategory; + this.brand = brand; + this.name = name; + this.rating = rating; + this.productPageLink = productPageLink; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/Bookmark.java b/src/main/java/com/ftm/server/entity/entities/Bookmark.java new file mode 100644 index 0000000..1975aa9 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/Bookmark.java @@ -0,0 +1,31 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "bookmark") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Bookmark extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + private User user; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id") + private Post post; + + @Builder(access = AccessLevel.PRIVATE) + private Bookmark(User user, Post post) { + this.user = user; + this.post = post; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/EmailVerificationLogs.java b/src/main/java/com/ftm/server/entity/entities/EmailVerificationLogs.java new file mode 100644 index 0000000..9ccbe81 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/EmailVerificationLogs.java @@ -0,0 +1,48 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "email_verification_logs") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class EmailVerificationLogs extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private String email; + + @Lob + @Column(name = "verification_code", nullable = false) + private String verificationCode; + + @Column(name = "is_verified", nullable = false) + private Boolean isVerified = false; + + @Column(name = "trial_num") + private Integer trialNum; + + @Column(name = "token_issuance_time") + private LocalDateTime tokenIssuanceTime; + + @Builder(access = AccessLevel.PRIVATE) + private EmailVerificationLogs( + String email, + String verificationCode, + Boolean isVerified, + Integer trialNum, + LocalDateTime tokenIssuanceTime) { + this.email = email; + this.verificationCode = verificationCode; + this.isVerified = isVerified; + this.trialNum = trialNum; + this.tokenIssuanceTime = tokenIssuanceTime; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/GroomingLevel.java b/src/main/java/com/ftm/server/entity/entities/GroomingLevel.java new file mode 100644 index 0000000..280781c --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/GroomingLevel.java @@ -0,0 +1,35 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "grooming_level") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class GroomingLevel extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Integer minScore; + + private Integer maxScore; + + private String mildLevelName; + + private String spicyLevelName; + + @Builder(access = AccessLevel.PRIVATE) + private GroomingLevel( + Integer minScore, Integer maxScore, String mildLevelName, String spicyLevelName) { + this.minScore = minScore; + this.maxScore = maxScore; + this.mildLevelName = mildLevelName; + this.spicyLevelName = spicyLevelName; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/GroomingTestAnswer.java b/src/main/java/com/ftm/server/entity/entities/GroomingTestAnswer.java new file mode 100644 index 0000000..2dba96f --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/GroomingTestAnswer.java @@ -0,0 +1,35 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "grooming_test_answer") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class GroomingTestAnswer extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "grooming_test_question_id") + private GroomingTestQuestion groomingTestQuestion; + + @Column(nullable = false) + private String answer; + + private Integer score; + + @Builder(access = AccessLevel.PRIVATE) + private GroomingTestAnswer( + GroomingTestQuestion groomingTestQuestion, String answer, Integer score) { + this.groomingTestQuestion = groomingTestQuestion; + this.answer = answer; + this.score = score; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/GroomingTestQuestion.java b/src/main/java/com/ftm/server/entity/entities/GroomingTestQuestion.java new file mode 100644 index 0000000..feff372 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/GroomingTestQuestion.java @@ -0,0 +1,31 @@ +package com.ftm.server.entity.entities; + +import com.ftm.server.entity.enums.GroomingCategory; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "grooming_test_question") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class GroomingTestQuestion extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private GroomingCategory groomingCategory; + + @Column(nullable = false) + private String question; + + @Builder(access = AccessLevel.PRIVATE) + private GroomingTestQuestion(GroomingCategory groomingCategory, String question) { + this.groomingCategory = groomingCategory; + this.question = question; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/GroomingTestResult.java b/src/main/java/com/ftm/server/entity/entities/GroomingTestResult.java new file mode 100644 index 0000000..619eb52 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/GroomingTestResult.java @@ -0,0 +1,40 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "grooming_test_result") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class GroomingTestResult extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + private User user; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "grommig_test_answer_id") + private GroomingTestAnswer groomingTestAnswer; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "grommig_test_question_id") + private GroomingTestQuestion groomingTestQuestion; + + @Builder(access = AccessLevel.PRIVATE) + private GroomingTestResult( + User user, + GroomingTestAnswer groomingTestAnswer, + GroomingTestQuestion groomingTestQuestion) { + this.user = user; + this.groomingTestAnswer = groomingTestAnswer; + this.groomingTestQuestion = groomingTestQuestion; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/Post.java b/src/main/java/com/ftm/server/entity/entities/Post.java new file mode 100644 index 0000000..4dc1f3c --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/Post.java @@ -0,0 +1,76 @@ +package com.ftm.server.entity.entities; + +import com.ftm.server.entity.enums.GroomingCategory; +import com.ftm.server.entity.enums.HashTag; +import io.hypersistence.utils.hibernate.type.array.EnumArrayType; +import io.hypersistence.utils.hibernate.type.array.internal.AbstractArrayType; +import jakarta.persistence.*; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Type; + +@Entity +@Table(name = "post") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Post extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + private User user; + + @Column(nullable = false) + private String title; + + @Lob + @Column(nullable = false) + private String content; + + @Enumerated(EnumType.STRING) + private GroomingCategory groomingCategory; + + @Type( + value = EnumArrayType.class, + parameters = + @org.hibernate.annotations.Parameter( + name = AbstractArrayType.SQL_ARRAY_TYPE, + value = "hashtag")) + @Column(name = "hashtags", columnDefinition = "hashtag[]") + private HashTag[] hashtags; + + private Integer viewCount = 0; + + private Integer likeCount = 0; + + private Boolean isDeleted = false; + + private LocalDateTime deletedAt; + + @Builder(access = AccessLevel.PRIVATE) + private Post( + User user, + String title, + String content, + GroomingCategory groomingCategory, + HashTag[] hashtags, + Integer viewCount, + Integer likeCount, + Boolean isDeleted, + LocalDateTime deletedAt) { + this.user = user; + this.title = title; + this.content = content; + this.groomingCategory = groomingCategory; + this.hashtags = hashtags; + this.viewCount = viewCount; + this.likeCount = likeCount; + this.isDeleted = isDeleted; + this.deletedAt = deletedAt; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/PostImage.java b/src/main/java/com/ftm/server/entity/entities/PostImage.java new file mode 100644 index 0000000..fa89db3 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/PostImage.java @@ -0,0 +1,29 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "post_image") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PostImage extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id") + private Post post; + + private String objectKey; + + @Builder(access = AccessLevel.PRIVATE) + private PostImage(Post post, String objectKey) { + this.post = post; + this.objectKey = objectKey; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/PostProduct.java b/src/main/java/com/ftm/server/entity/entities/PostProduct.java new file mode 100644 index 0000000..de653b3 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/PostProduct.java @@ -0,0 +1,40 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "post_product") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PostProduct extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id") + private Post post; + + @Column(nullable = false) + private String name; + + @Lob private String detail; + + private String brand; + + private String link; + + @Builder(access = AccessLevel.PRIVATE) + private PostProduct(Post post, String name, String detail, String brand, String link) { + this.post = post; + this.name = name; + this.detail = detail; + this.brand = brand; + this.link = link; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/PostProductImage.java b/src/main/java/com/ftm/server/entity/entities/PostProductImage.java new file mode 100644 index 0000000..0f698af --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/PostProductImage.java @@ -0,0 +1,29 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "post_product_image") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PostProductImage extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_product_id") + private PostProduct postProduct; + + private String objectKey; + + @Builder(access = AccessLevel.PRIVATE) + private PostProductImage(PostProduct postProduct, String objectKey) { + this.postProduct = postProduct; + this.objectKey = objectKey; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/User.java b/src/main/java/com/ftm/server/entity/entities/User.java new file mode 100644 index 0000000..3684a4e --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/User.java @@ -0,0 +1,99 @@ +package com.ftm.server.entity.entities; + +import com.ftm.server.entity.enums.AgeGroup; +import com.ftm.server.entity.enums.HashTag; +import com.ftm.server.entity.enums.SocialProvider; +import com.ftm.server.entity.enums.UserRole; +import io.hypersistence.utils.hibernate.type.array.EnumArrayType; +import io.hypersistence.utils.hibernate.type.array.internal.AbstractArrayType; +import jakarta.persistence.*; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Type; + +@Entity +@Table(name = "users") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class User extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(unique = true) + private String email; + + private String password; + + @Column(nullable = false, unique = true) + private String nickname; + + @Enumerated(EnumType.STRING) + private AgeGroup ageGroup; + + @Enumerated(EnumType.STRING) + private SocialProvider socialProvider; + + @Column(unique = true) + private String socialId; + + @Column(nullable = false) + private Integer groomingScore = 0; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "grooming_level_id") + private GroomingLevel groomingLevel; + + @Enumerated(EnumType.STRING) + private UserRole role; + + @Type( + value = EnumArrayType.class, + parameters = { + @org.hibernate.annotations.Parameter( + name = AbstractArrayType.SQL_ARRAY_TYPE, + value = "hashtag" // PostgreSQL에서 정의된 ENUM 타입 이름 + ) + }) + @Column( + name = "favorite_hashtags", + columnDefinition = "hashtag[]" // PostgreSQL의 ENUM 배열 타입으로 지정 + ) + private HashTag[] favoriteHashtags; + + @Column(nullable = false) + private Boolean isDeleted = false; + + private LocalDateTime deletedAt; + + @Builder(access = AccessLevel.PRIVATE) + private User( + String email, + String password, + String nickname, + AgeGroup ageGroup, + SocialProvider socialProvider, + String socialId, + Integer groomingScore, + GroomingLevel groomingLevel, + UserRole role, + HashTag[] favoriteHashtags, + Boolean isDeleted, + LocalDateTime deletedAt) { + this.email = email; + this.password = password; + this.nickname = nickname; + this.ageGroup = ageGroup; + this.socialProvider = socialProvider; + this.socialId = socialId; + this.groomingScore = groomingScore; + this.groomingLevel = groomingLevel; + this.role = role; + this.favoriteHashtags = favoriteHashtags; + this.isDeleted = isDeleted; + this.deletedAt = deletedAt; + } +} diff --git a/src/main/java/com/ftm/server/entity/entities/UserImage.java b/src/main/java/com/ftm/server/entity/entities/UserImage.java new file mode 100644 index 0000000..6247ee4 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/entities/UserImage.java @@ -0,0 +1,30 @@ +package com.ftm.server.entity.entities; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "user_image") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class UserImage extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + private User user; + + @Column(nullable = false) + private String objectKey = "default-image"; + + @Builder(access = AccessLevel.PRIVATE) + private UserImage(User user, String objectKey) { + this.user = user; + this.objectKey = objectKey; + } +} diff --git a/src/main/java/com/ftm/server/entity/enums/.gitkeep b/src/main/java/com/ftm/server/entity/enums/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/ftm/server/entity/enums/AgeGroup.java b/src/main/java/com/ftm/server/entity/enums/AgeGroup.java new file mode 100644 index 0000000..8d80af6 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/enums/AgeGroup.java @@ -0,0 +1,18 @@ +package com.ftm.server.entity.enums; + +import lombok.Getter; + +@Getter +public enum AgeGroup { + TEENS("10대"), + TWENTIES("20대"), + THIRTIES("30대"), + FORTIES("40대"), + FIFTIES("50대"); + + private final String value; + + AgeGroup(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/ftm/server/entity/enums/BeautyProductCategory.java b/src/main/java/com/ftm/server/entity/enums/BeautyProductCategory.java new file mode 100644 index 0000000..27e996b --- /dev/null +++ b/src/main/java/com/ftm/server/entity/enums/BeautyProductCategory.java @@ -0,0 +1,14 @@ +package com.ftm.server.entity.enums; + +import lombok.Getter; + +@Getter +public enum BeautyProductCategory { + SKINCARE("스킨케어"); + + private final String value; + + BeautyProductCategory(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/ftm/server/entity/enums/GroomingCategory.java b/src/main/java/com/ftm/server/entity/enums/GroomingCategory.java new file mode 100644 index 0000000..de657ab --- /dev/null +++ b/src/main/java/com/ftm/server/entity/enums/GroomingCategory.java @@ -0,0 +1,18 @@ +package com.ftm.server.entity.enums; + +import lombok.Getter; + +@Getter +public enum GroomingCategory { + BEAUTY("뷰티"), + HAIR("헤어"), + FASHION("패션"), + WORKOUT("운동"), + HYGIENE("위생"); + + private final String value; + + GroomingCategory(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/ftm/server/entity/enums/HashTag.java b/src/main/java/com/ftm/server/entity/enums/HashTag.java new file mode 100644 index 0000000..64af998 --- /dev/null +++ b/src/main/java/com/ftm/server/entity/enums/HashTag.java @@ -0,0 +1,16 @@ +package com.ftm.server.entity.enums; + +import lombok.Getter; + +@Getter +public enum HashTag { + PERFUME("향수", GroomingCategory.HYGIENE); + + private final String value; + private final GroomingCategory groomingCategory; + + HashTag(String value, GroomingCategory groomingCategory) { + this.value = value; + this.groomingCategory = groomingCategory; + } +} diff --git a/src/main/java/com/ftm/server/entity/enums/SocialProvider.java b/src/main/java/com/ftm/server/entity/enums/SocialProvider.java new file mode 100644 index 0000000..384ed8e --- /dev/null +++ b/src/main/java/com/ftm/server/entity/enums/SocialProvider.java @@ -0,0 +1,14 @@ +package com.ftm.server.entity.enums; + +import lombok.Getter; + +@Getter +public enum SocialProvider { + KAKAO("카카오"); + + private final String value; + + SocialProvider(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/ftm/server/entity/enums/UserRole.java b/src/main/java/com/ftm/server/entity/enums/UserRole.java new file mode 100644 index 0000000..d59f54c --- /dev/null +++ b/src/main/java/com/ftm/server/entity/enums/UserRole.java @@ -0,0 +1,16 @@ +package com.ftm.server.entity.enums; + +import lombok.Getter; + +@Getter +public enum UserRole { + ADMIN("admin"), + USER("일반 user"), + GUEST("방문자"); + + private final String value; + + UserRole(String value) { + this.value = value; + } +}