Skip to content

Commit 9aed2d3

Browse files
authored
Merge pull request #17 from FitTheMan/feature/#15
feat: JPA Entity와 Enum 작성(#15)
2 parents 54bea97 + 3ed5a3f commit 9aed2d3

24 files changed

+699
-0
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ dependencies {
4040
runtimeOnly 'org.postgresql:postgresql'
4141
compileOnly 'org.projectlombok:lombok'
4242
annotationProcessor 'org.projectlombok:lombok'
43+
implementation 'io.hypersistence:hypersistence-utils-hibernate-63:3.9.3'
44+
4345

4446
// Validation
4547
implementation 'org.springframework.boot:spring-boot-starter-validation'
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.ftm.server.adapter.gateway.repository;
2+
3+
import com.ftm.server.entity.entities.User;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface UserRepository extends JpaRepository<User, Long> {}

src/main/java/com/ftm/server/entity/entities/.gitkeep

Whitespace-only changes.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.ftm.server.entity.entities;
2+
3+
import jakarta.persistence.*;
4+
import java.time.LocalDateTime;
5+
import lombok.AccessLevel;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import org.hibernate.annotations.CreationTimestamp;
9+
import org.hibernate.annotations.UpdateTimestamp;
10+
11+
@MappedSuperclass
12+
@Getter
13+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
14+
public abstract class BaseEntity {
15+
16+
@CreationTimestamp
17+
@Column(name = "created_at", updatable = false)
18+
private LocalDateTime createdAt;
19+
20+
@UpdateTimestamp
21+
@Column(name = "updated_at")
22+
private LocalDateTime updatedAt;
23+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.ftm.server.entity.entities;
2+
3+
import com.ftm.server.entity.enums.BeautyProductCategory;
4+
import jakarta.persistence.*;
5+
import lombok.AccessLevel;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
10+
@Entity
11+
@Table(name = "beauty_product")
12+
@Getter
13+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
14+
public class BeautyProduct extends BaseEntity {
15+
16+
@Id
17+
@GeneratedValue(strategy = GenerationType.IDENTITY)
18+
private Long id;
19+
20+
@Column(name = "product_image_link")
21+
private String productImageLink;
22+
23+
@Enumerated(EnumType.STRING)
24+
@Column(name = "beauty_product_category")
25+
private BeautyProductCategory beautyProductCategory;
26+
27+
private String brand;
28+
private String name;
29+
private Double rating;
30+
31+
@Column(name = "product_page_link")
32+
private String productPageLink;
33+
34+
@Builder(access = AccessLevel.PRIVATE)
35+
private BeautyProduct(
36+
String productImageLink,
37+
BeautyProductCategory beautyProductCategory,
38+
String brand,
39+
String name,
40+
Double rating,
41+
String productPageLink) {
42+
this.productImageLink = productImageLink;
43+
this.beautyProductCategory = beautyProductCategory;
44+
this.brand = brand;
45+
this.name = name;
46+
this.rating = rating;
47+
this.productPageLink = productPageLink;
48+
}
49+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.ftm.server.entity.entities;
2+
3+
import jakarta.persistence.*;
4+
import lombok.AccessLevel;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
@Entity
10+
@Table(name = "bookmark")
11+
@Getter
12+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
13+
public class Bookmark extends BaseEntity {
14+
@Id
15+
@GeneratedValue(strategy = GenerationType.IDENTITY)
16+
private Long id;
17+
18+
@ManyToOne(fetch = FetchType.LAZY)
19+
@JoinColumn(name = "user_id")
20+
private User user;
21+
22+
@ManyToOne(fetch = FetchType.LAZY)
23+
@JoinColumn(name = "post_id")
24+
private Post post;
25+
26+
@Builder(access = AccessLevel.PRIVATE)
27+
private Bookmark(User user, Post post) {
28+
this.user = user;
29+
this.post = post;
30+
}
31+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.ftm.server.entity.entities;
2+
3+
import jakarta.persistence.*;
4+
import java.time.LocalDateTime;
5+
import lombok.AccessLevel;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
10+
@Entity
11+
@Table(name = "email_verification_logs")
12+
@Getter
13+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
14+
public class EmailVerificationLogs extends BaseEntity {
15+
@Id
16+
@GeneratedValue(strategy = GenerationType.IDENTITY)
17+
private Long id;
18+
19+
@Column(nullable = false)
20+
private String email;
21+
22+
@Lob
23+
@Column(name = "verification_code", nullable = false)
24+
private String verificationCode;
25+
26+
@Column(name = "is_verified", nullable = false)
27+
private Boolean isVerified = false;
28+
29+
@Column(name = "trial_num")
30+
private Integer trialNum;
31+
32+
@Column(name = "token_issuance_time")
33+
private LocalDateTime tokenIssuanceTime;
34+
35+
@Builder(access = AccessLevel.PRIVATE)
36+
private EmailVerificationLogs(
37+
String email,
38+
String verificationCode,
39+
Boolean isVerified,
40+
Integer trialNum,
41+
LocalDateTime tokenIssuanceTime) {
42+
this.email = email;
43+
this.verificationCode = verificationCode;
44+
this.isVerified = isVerified;
45+
this.trialNum = trialNum;
46+
this.tokenIssuanceTime = tokenIssuanceTime;
47+
}
48+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.ftm.server.entity.entities;
2+
3+
import jakarta.persistence.*;
4+
import lombok.AccessLevel;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
@Entity
10+
@Table(name = "grooming_level")
11+
@Getter
12+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
13+
public class GroomingLevel extends BaseEntity {
14+
15+
@Id
16+
@GeneratedValue(strategy = GenerationType.IDENTITY)
17+
private Long id;
18+
19+
private Integer minScore;
20+
21+
private Integer maxScore;
22+
23+
private String mildLevelName;
24+
25+
private String spicyLevelName;
26+
27+
@Builder(access = AccessLevel.PRIVATE)
28+
private GroomingLevel(
29+
Integer minScore, Integer maxScore, String mildLevelName, String spicyLevelName) {
30+
this.minScore = minScore;
31+
this.maxScore = maxScore;
32+
this.mildLevelName = mildLevelName;
33+
this.spicyLevelName = spicyLevelName;
34+
}
35+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.ftm.server.entity.entities;
2+
3+
import jakarta.persistence.*;
4+
import lombok.AccessLevel;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
@Entity
10+
@Table(name = "grooming_test_answer")
11+
@Getter
12+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
13+
public class GroomingTestAnswer extends BaseEntity {
14+
15+
@Id
16+
@GeneratedValue(strategy = GenerationType.IDENTITY)
17+
private Long id;
18+
19+
@ManyToOne(fetch = FetchType.LAZY)
20+
@JoinColumn(name = "grooming_test_question_id")
21+
private GroomingTestQuestion groomingTestQuestion;
22+
23+
@Column(nullable = false)
24+
private String answer;
25+
26+
private Integer score;
27+
28+
@Builder(access = AccessLevel.PRIVATE)
29+
private GroomingTestAnswer(
30+
GroomingTestQuestion groomingTestQuestion, String answer, Integer score) {
31+
this.groomingTestQuestion = groomingTestQuestion;
32+
this.answer = answer;
33+
this.score = score;
34+
}
35+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.ftm.server.entity.entities;
2+
3+
import com.ftm.server.entity.enums.GroomingCategory;
4+
import jakarta.persistence.*;
5+
import lombok.AccessLevel;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
10+
@Entity
11+
@Table(name = "grooming_test_question")
12+
@Getter
13+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
14+
public class GroomingTestQuestion extends BaseEntity {
15+
@Id
16+
@GeneratedValue(strategy = GenerationType.IDENTITY)
17+
private Long id;
18+
19+
@Enumerated(EnumType.STRING)
20+
@Column(nullable = false)
21+
private GroomingCategory groomingCategory;
22+
23+
@Column(nullable = false)
24+
private String question;
25+
26+
@Builder(access = AccessLevel.PRIVATE)
27+
private GroomingTestQuestion(GroomingCategory groomingCategory, String question) {
28+
this.groomingCategory = groomingCategory;
29+
this.question = question;
30+
}
31+
}

0 commit comments

Comments
 (0)