Skip to content

Commit

Permalink
Feature | #88 | @YongsHub | 케이크 수정 및 삭제를 위한 도메인 로직 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
YongsHub committed Jun 17, 2024
1 parent 55bf047 commit d498d0c
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package com.cakk.domain.mysql.entity.cake;

import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
Expand All @@ -10,6 +14,7 @@
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;

import org.hibernate.annotations.ColumnDefault;
Expand All @@ -20,6 +25,7 @@

import com.cakk.domain.mysql.entity.audit.AuditEntity;
import com.cakk.domain.mysql.entity.shop.CakeShop;
import com.cakk.domain.mysql.mapper.CakeTagMapper;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand All @@ -42,6 +48,12 @@ public class Cake extends AuditEntity {
@JoinColumn(name = "shop_id", referencedColumnName = "shop_id")
private CakeShop cakeShop;

@OneToMany(mappedBy = "cake", cascade = CascadeType.PERSIST, orphanRemoval = true)
private Set<CakeCategory> cakeCategories = new HashSet<>();

@OneToMany(mappedBy = "cake", cascade = CascadeType.PERSIST, orphanRemoval = true)
private Set<CakeTag> cakeTags = new HashSet<>();

@ColumnDefault("null")
@Column(name = "deleted_at")
private LocalDateTime deletedAt;
Expand All @@ -59,4 +71,31 @@ public void increaseHeartCount() {
public void decreaseHeartCount() {
this.heartCount--;
}

public void updateCakeImageUrl(String cakeImageUrl) {
this.cakeImageUrl = cakeImageUrl;
}

public void updateCakeCategories(List<CakeCategory> cakeCategories) {
this.cakeCategories.clear();

cakeCategories.forEach(cakeCategory -> {
cakeCategory.updateCake(this);
this.cakeCategories.add(cakeCategory);
});
}

public void updateCakeTags(List<Tag> tags) {
this.cakeTags.clear();

tags.forEach(tag -> this.cakeTags.add(CakeTagMapper.supplyCakeTagBy(this, tag)));
}

public void removeCakeCategories() {
this.cakeCategories.clear();
}

public void removeCakeTags() {
this.cakeTags.clear();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import jakarta.persistence.Table;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

Expand All @@ -38,8 +39,13 @@ public class CakeCategory extends AuditCreatedEntity {
@Column(name = "cake_design_category")
private CakeDesignCategory cakeDesignCategory;

@Builder
public CakeCategory(Cake cake, CakeDesignCategory cakeDesignCategory) {
this.cake = cake;
this.cakeDesignCategory = cakeDesignCategory;
}

public void updateCake(Cake cake) {
this.cake = cake;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
import jakarta.persistence.Table;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import com.cakk.domain.mysql.entity.audit.AuditCreatedEntity;
import com.cakk.domain.mysql.entity.user.User;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand All @@ -36,6 +36,7 @@ public class CakeTag extends AuditCreatedEntity {
@JoinColumn(name = "tag_id", referencedColumnName = "tag_id", nullable = false)
private Tag tag;

@Builder
public CakeTag(Cake cake, Tag tag) {
this.cake = cake;
this.tag = tag;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import jakarta.persistence.Table;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

Expand All @@ -27,6 +28,7 @@ public class Tag extends AuditCreatedEntity {
@Column(name = "tag_name", length = 20, nullable = false)
private String tagName;

@Builder
public Tag(String tagName) {
this.tagName = tagName;
}
Expand Down

0 comments on commit d498d0c

Please sign in to comment.