Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
Original file line number Diff line number Diff line change
@@ -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<User, Long> {}
Empty file.
23 changes: 23 additions & 0 deletions src/main/java/com/ftm/server/entity/entities/BaseEntity.java
Original file line number Diff line number Diff line change
@@ -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;
}
49 changes: 49 additions & 0 deletions src/main/java/com/ftm/server/entity/entities/BeautyProduct.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
31 changes: 31 additions & 0 deletions src/main/java/com/ftm/server/entity/entities/Bookmark.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
35 changes: 35 additions & 0 deletions src/main/java/com/ftm/server/entity/entities/GroomingLevel.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
76 changes: 76 additions & 0 deletions src/main/java/com/ftm/server/entity/entities/Post.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
Loading