[#5] Refactor: 코틀린 베이스 프로젝트로 리팩토링
- MenuOption, OptionDetail 도메인 내용 코틀린 변환 - java 17 버전 migration
This commit is contained in:
@@ -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()
|
||||
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
@@ -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)
|
||||
|
||||
@@ -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<OptionDetail> optionDetailList;
|
||||
|
||||
public MenuOptionResponseDto toResponseDto() {
|
||||
return MenuOptionResponseDto.builder()
|
||||
.optionId(optionId)
|
||||
.title(title)
|
||||
.optionDetailList(optionDetailList
|
||||
.stream()
|
||||
.map(OptionDetail::toResponseDto)
|
||||
.collect(Collectors.toList()))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -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<OptionDetail>
|
||||
) : BaseTimeEntity()
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
}
|
||||
@@ -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) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<OptionDetailResponseDto> optionDetailList;
|
||||
}
|
||||
@@ -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<OptionDetailResponseDto> = emptyList()
|
||||
) {
|
||||
companion object {
|
||||
fun of(menuOption: MenuOption): MenuOptionResponseDto {
|
||||
return MenuOptionResponseDto(
|
||||
id = menuOption.id,
|
||||
title = menuOption.title,
|
||||
optionDetailList = menuOption.optionDetailList.map { OptionDetailResponseDto.of(it) }
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user