diff --git a/build.gradle b/build.gradle index 11d6207..2f5364a 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ apply plugin: 'io.spring.dependency-management' group = 'io.beaniejoy.dongecafe' version = '0.0.1-SNAPSHOT' -sourceCompatibility = '11' +sourceCompatibility = '17' repositories { mavenCentral() diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 05679dc..ffed3a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/Cafe.kt b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/Cafe.kt index 3f1f002..c43a580 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/Cafe.kt +++ b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/Cafe.kt @@ -3,25 +3,26 @@ package io.beaniejoy.dongnecafe.domain.cafe.domain import io.beaniejoy.dongnecafe.common.domain.BaseTimeEntity import javax.persistence.* -@Entity(name = "cafe") +@Entity +@Table(name = "cafe") class Cafe( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0L, - @Column(name = "name") + @Column(name = "name", nullable = false) var name: String, - @Column(name = "address") + @Column(name = "address", nullable = false) var address: String, - @Column(name = "phone_number") + @Column(name = "phone_number", nullable = false) var phoneNumber: String, - @Column(name = "total_rate") + @Column(name = "total_rate", nullable = false) val totalRate: Double, - @Column(name = "description") + @Column(name = "description", nullable = false) var description: String, @OneToMany(mappedBy = "cafe", fetch = FetchType.LAZY) diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/CafeImage.kt b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/CafeImage.kt index 751bc8d..f34b036 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/CafeImage.kt +++ b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/CafeImage.kt @@ -4,15 +4,16 @@ import io.beaniejoy.dongnecafe.common.domain.BaseTimeEntity import javax.persistence.* @Entity +@Table(name = "cafe_image") class CafeImage( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long, - @Column(name = "img_url") + @Column(name = "img_url", nullable = false) val imgUrl: String, @ManyToOne - @JoinColumn(name = "cafe_id") - val cafe: Cafe, + @JoinColumn(name = "cafe_id", nullable = false) + val cafe: Cafe ) : BaseTimeEntity() \ No newline at end of file diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/CafeMenu.kt b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/CafeMenu.kt index e0e3da9..e73d3af 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/CafeMenu.kt +++ b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/CafeMenu.kt @@ -4,20 +4,21 @@ import io.beaniejoy.dongnecafe.common.domain.BaseTimeEntity import java.math.BigDecimal import javax.persistence.* -@Entity(name = "cafe_menu") +@Entity +@Table(name = "cafe_menu") class CafeMenu( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0L, - @Column(name = "name") + @Column(name = "name", nullable = false) val name: String, - @Column(name = "price") + @Column(name = "price", nullable = false) val price: BigDecimal = BigDecimal.ZERO, @ManyToOne - @JoinColumn(name = "cafe_id") + @JoinColumn(name = "cafe_id", nullable = false) val cafe: Cafe, @OneToMany(mappedBy = "cafeMenu", fetch = FetchType.LAZY) diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/MenuOption.java b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/MenuOption.java deleted file mode 100644 index 9f878c3..0000000 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/MenuOption.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.beaniejoy.dongnecafe.domain.cafe.domain; - -import io.beaniejoy.dongnecafe.domain.cafe.dto.menu.MenuOptionResponseDto; -import io.beaniejoy.dongnecafe.common.domain.BaseTimeEntity; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import org.hibernate.annotations.GenericGenerator; - -import javax.persistence.*; -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; - -@Getter -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Entity -public class MenuOption extends BaseTimeEntity { - - @Id - @GeneratedValue(generator = "uuid2") - @GenericGenerator(name = "uuid2", strategy = "uuid2") - @Column(name = "option_id", columnDefinition = "BINARY(16)") - private UUID optionId; - - private String title; - - @ManyToOne - @JoinColumn(name = "menu_id") - private CafeMenu cafeMenu; - - @OneToMany(mappedBy = "menuOption", fetch = FetchType.EAGER) - private List optionDetailList; - - public MenuOptionResponseDto toResponseDto() { - return MenuOptionResponseDto.builder() - .optionId(optionId) - .title(title) - .optionDetailList(optionDetailList - .stream() - .map(OptionDetail::toResponseDto) - .collect(Collectors.toList())) - .build(); - } -} diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/MenuOption.kt b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/MenuOption.kt new file mode 100644 index 0000000..3afb052 --- /dev/null +++ b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/MenuOption.kt @@ -0,0 +1,22 @@ +package io.beaniejoy.dongnecafe.domain.cafe.domain + +import io.beaniejoy.dongnecafe.common.domain.BaseTimeEntity +import javax.persistence.* + +@Entity +@Table(name = "menu_option") +class MenuOption( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val id: Long = 0L, + + @Column(name = "title", nullable = false) + val title: String, + + @ManyToOne + @JoinColumn(name = "menu_id", nullable = false) + val cafeMenu: CafeMenu, + + @OneToMany(mappedBy = "menuOption", fetch = FetchType.EAGER) + val optionDetailList: MutableList +) : BaseTimeEntity() \ No newline at end of file diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/OptionDetail.java b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/OptionDetail.java deleted file mode 100644 index 8094dd9..0000000 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/OptionDetail.java +++ /dev/null @@ -1,38 +0,0 @@ -package io.beaniejoy.dongnecafe.domain.cafe.domain; - -import io.beaniejoy.dongnecafe.domain.cafe.dto.menu.OptionDetailResponseDto; -import io.beaniejoy.dongnecafe.common.domain.BaseTimeEntity; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import javax.persistence.*; - -@Getter -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Entity -public class OptionDetail extends BaseTimeEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long optionDetailId; - - private String name; - - private Integer extra; - - @ManyToOne - @JoinColumn(name = "option_id") - private MenuOption menuOption; - - public OptionDetailResponseDto toResponseDto() { - return OptionDetailResponseDto.builder() - .optionDetailId(optionDetailId) - .name(name) - .extra(extra) - .build(); - } -} diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/OptionDetail.kt b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/OptionDetail.kt new file mode 100644 index 0000000..d7f81c2 --- /dev/null +++ b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/domain/OptionDetail.kt @@ -0,0 +1,24 @@ +package io.beaniejoy.dongnecafe.domain.cafe.domain + +import io.beaniejoy.dongnecafe.common.domain.BaseTimeEntity +import java.math.BigDecimal +import javax.persistence.* + +@Entity +@Table(name = "option_detail") +class OptionDetail( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val id: Long = 0L, + + @Column(name = "name", nullable = false) + val name: String, + + @Column(name = "extra", nullable = false) + val extra: BigDecimal, + + @ManyToOne + @JoinColumn(name = "option_id", nullable = false) + val menuOption: MenuOption +): BaseTimeEntity() { +} \ No newline at end of file diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/CafeMenuDetailResponseDto.kt b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/CafeMenuDetailResponseDto.kt index 6bdd947..b5a0304 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/CafeMenuDetailResponseDto.kt +++ b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/CafeMenuDetailResponseDto.kt @@ -13,7 +13,7 @@ data class CafeMenuDetailResponseDto( return CafeMenuDetailResponseDto( name = cafeMenu.name, price = cafeMenu.price, - optionList = cafeMenu.menuOptionList.map { it.toResponseDto() } + optionList = cafeMenu.menuOptionList.map { MenuOptionResponseDto.of(it) } ) } } diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/MenuOptionResponseDto.java b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/MenuOptionResponseDto.java deleted file mode 100644 index 58a2678..0000000 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/MenuOptionResponseDto.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.beaniejoy.dongnecafe.domain.cafe.dto.menu; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import java.util.List; -import java.util.UUID; - -@Getter -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class MenuOptionResponseDto { - - private UUID optionId; - - private String title; - - private List optionDetailList; -} diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/MenuOptionResponseDto.kt b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/MenuOptionResponseDto.kt new file mode 100644 index 0000000..b2cb086 --- /dev/null +++ b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/MenuOptionResponseDto.kt @@ -0,0 +1,19 @@ +package io.beaniejoy.dongnecafe.domain.cafe.dto.menu + +import io.beaniejoy.dongnecafe.domain.cafe.domain.MenuOption + +data class MenuOptionResponseDto( + val id: Long = 0L, + val title: String? = null, + val optionDetailList: List = emptyList() +) { + companion object { + fun of(menuOption: MenuOption): MenuOptionResponseDto { + return MenuOptionResponseDto( + id = menuOption.id, + title = menuOption.title, + optionDetailList = menuOption.optionDetailList.map { OptionDetailResponseDto.of(it) } + ) + } + } +} \ No newline at end of file diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/OptionDetailResponseDto.java b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/OptionDetailResponseDto.java deleted file mode 100644 index dc0f7ac..0000000 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/OptionDetailResponseDto.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.beaniejoy.dongnecafe.domain.cafe.dto.menu; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class OptionDetailResponseDto { - - private Long optionDetailId; - - private String name; - - private Integer extra; -} diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/OptionDetailResponseDto.kt b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/OptionDetailResponseDto.kt new file mode 100644 index 0000000..cd5e8fe --- /dev/null +++ b/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/dto/menu/OptionDetailResponseDto.kt @@ -0,0 +1,20 @@ +package io.beaniejoy.dongnecafe.domain.cafe.dto.menu + +import io.beaniejoy.dongnecafe.domain.cafe.domain.OptionDetail +import java.math.BigDecimal + +data class OptionDetailResponseDto( + val id: Long = 0L, + val name: String? = null, + val extra: BigDecimal = BigDecimal.ZERO +) { + companion object { + fun of(optionDetail: OptionDetail): OptionDetailResponseDto { + return OptionDetailResponseDto( + id = optionDetail.id, + name = optionDetail.name, + extra = optionDetail.extra + ) + } + } +} \ No newline at end of file