diff --git a/src/main/java/hyu/erica/capstone/CapstoneApplication.java b/src/main/java/hyu/erica/capstone/CapstoneApplication.java index 39f3dbd..11508a5 100644 --- a/src/main/java/hyu/erica/capstone/CapstoneApplication.java +++ b/src/main/java/hyu/erica/capstone/CapstoneApplication.java @@ -2,8 +2,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @SpringBootApplication +@EnableJpaAuditing public class CapstoneApplication { public static void main(String[] args) { diff --git a/src/main/java/hyu/erica/capstone/domain/Attraction.java b/src/main/java/hyu/erica/capstone/domain/Attraction.java new file mode 100644 index 0000000..5a9b567 --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/Attraction.java @@ -0,0 +1,5 @@ +package hyu.erica.capstone.domain; + +public class Attraction { + // 추후 작성 예정 +} diff --git a/src/main/java/hyu/erica/capstone/domain/Restaurant.java b/src/main/java/hyu/erica/capstone/domain/Restaurant.java new file mode 100644 index 0000000..a5cfd5b --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/Restaurant.java @@ -0,0 +1,5 @@ +package hyu.erica.capstone.domain; + +public class Restaurant { + // 추후 작성 예정 +} diff --git a/src/main/java/hyu/erica/capstone/domain/TravelPlan.java b/src/main/java/hyu/erica/capstone/domain/TravelPlan.java new file mode 100644 index 0000000..9688d4d --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/TravelPlan.java @@ -0,0 +1,46 @@ +package hyu.erica.capstone.domain; + + +import static jakarta.persistence.GenerationType.IDENTITY; + +import hyu.erica.capstone.domain.enums.City; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +@Entity +@Getter +@Builder +@DynamicUpdate +@DynamicInsert +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class TravelPlan { + + @Id @GeneratedValue(strategy = IDENTITY) + private Long id; + + private City city; + + private LocalDateTime startDate; + + private LocalDateTime endDate; + + private String preferActivity; + + private String requirement; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; +} diff --git a/src/main/java/hyu/erica/capstone/domain/User.java b/src/main/java/hyu/erica/capstone/domain/User.java new file mode 100644 index 0000000..7798b28 --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/User.java @@ -0,0 +1,49 @@ +package hyu.erica.capstone.domain; + + +import hyu.erica.capstone.domain.base.BaseEntity; +import hyu.erica.capstone.domain.enums.Gender; +import hyu.erica.capstone.domain.enums.ThirdPartyLogin; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import java.time.LocalDate; +import java.util.List; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +@Entity +@Getter +@Builder +@DynamicUpdate +@DynamicInsert +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class User extends BaseEntity { + + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + + private String nickname; + + private String email; + + private String password; + + private LocalDate birthday; + + private Gender gender; + + private String profileImage; + + private ThirdPartyLogin thirdPartyLogin; + +} diff --git a/src/main/java/hyu/erica/capstone/domain/base/BaseEntity.java b/src/main/java/hyu/erica/capstone/domain/base/BaseEntity.java new file mode 100644 index 0000000..758342d --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/base/BaseEntity.java @@ -0,0 +1,21 @@ +package hyu.erica.capstone.domain.base; + +import jakarta.persistence.EntityListeners; +import jakarta.persistence.MappedSuperclass; +import java.time.LocalDateTime; +import lombok.Getter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +@Getter +public abstract class BaseEntity { + + @CreatedDate + private LocalDateTime createdAt; + + @LastModifiedDate + private LocalDateTime updatedAt; +} \ No newline at end of file diff --git a/src/main/java/hyu/erica/capstone/domain/enums/City.java b/src/main/java/hyu/erica/capstone/domain/enums/City.java new file mode 100644 index 0000000..bf21044 --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/enums/City.java @@ -0,0 +1,5 @@ +package hyu.erica.capstone.domain.enums; + +public enum City { + BUSAN, DAEGU, INCHEON, JEJU, SEOUL +} diff --git a/src/main/java/hyu/erica/capstone/domain/enums/Gender.java b/src/main/java/hyu/erica/capstone/domain/enums/Gender.java new file mode 100644 index 0000000..9a0c86c --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/enums/Gender.java @@ -0,0 +1,5 @@ +package hyu.erica.capstone.domain.enums; + +public enum Gender { + MALE, FEMALE +} diff --git a/src/main/java/hyu/erica/capstone/domain/enums/ThirdPartyLogin.java b/src/main/java/hyu/erica/capstone/domain/enums/ThirdPartyLogin.java new file mode 100644 index 0000000..61bc695 --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/enums/ThirdPartyLogin.java @@ -0,0 +1,5 @@ +package hyu.erica.capstone.domain.enums; + +public enum ThirdPartyLogin { + GOOGLE, NAVER, KAKAO +} diff --git a/src/main/java/hyu/erica/capstone/domain/mapping/PreferAttraction.java b/src/main/java/hyu/erica/capstone/domain/mapping/PreferAttraction.java new file mode 100644 index 0000000..4e7b69e --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/mapping/PreferAttraction.java @@ -0,0 +1,43 @@ +package hyu.erica.capstone.domain.mapping; + +import static jakarta.persistence.GenerationType.*; + +import hyu.erica.capstone.domain.Attraction; +import hyu.erica.capstone.domain.User; +import hyu.erica.capstone.domain.base.BaseEntity; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +@Entity +@Getter +@Builder +@DynamicUpdate +@DynamicInsert +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class PreferAttraction extends BaseEntity { + + @Id @GeneratedValue(strategy = IDENTITY) + private Long id; + + //private Attraction attraction; + + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + @JoinColumn(name = "user_id") + private User user; + + private boolean isPrefer; + +} diff --git a/src/main/java/hyu/erica/capstone/domain/mapping/PreferRestaurant.java b/src/main/java/hyu/erica/capstone/domain/mapping/PreferRestaurant.java new file mode 100644 index 0000000..48ba4c2 --- /dev/null +++ b/src/main/java/hyu/erica/capstone/domain/mapping/PreferRestaurant.java @@ -0,0 +1,42 @@ +package hyu.erica.capstone.domain.mapping; + +import static jakarta.persistence.GenerationType.IDENTITY; + +import hyu.erica.capstone.domain.Restaurant; +import hyu.erica.capstone.domain.User; +import hyu.erica.capstone.domain.base.BaseEntity; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +@Entity +@Getter +@Builder +@DynamicUpdate +@DynamicInsert +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class PreferRestaurant extends BaseEntity { + + @Id @GeneratedValue(strategy = IDENTITY) + private Long id; + +// private Restaurant restaurant; + + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + @JoinColumn(name = "user_id") + private User user; + + private boolean isPrefer; +}