From 57ded983f3e96767fa591ea1deb192eeeea534b3 Mon Sep 17 00:00:00 2001 From: meohin Date: Wed, 17 Sep 2025 16:24:07 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20Wishlist=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../back/domain/wishlist/entity/Wishlist.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/com/back/domain/wishlist/entity/Wishlist.java diff --git a/src/main/java/com/back/domain/wishlist/entity/Wishlist.java b/src/main/java/com/back/domain/wishlist/entity/Wishlist.java new file mode 100644 index 00000000..d381ebfa --- /dev/null +++ b/src/main/java/com/back/domain/wishlist/entity/Wishlist.java @@ -0,0 +1,36 @@ +package com.back.domain.wishlist.entity; + +import com.back.domain.user.entity.User; +import com.back.domain.wishlist.enums.WishlistStatus; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Entity +@Getter +@Setter +@NoArgsConstructor +public class Wishlist { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private LocalDateTime createdAt; + + @ManyToOne + private User user; // 찜한 사용자 (위시리스트의 주인) + +// TODO: Cocktail 도메인 추가 후 활성화 +// @ManyToOne +// private Cocktail cocktail; + + @Enumerated(EnumType.STRING) + @Column(nullable = false) + // 위시리스트 상태 - 기본값은 ACTIVE (활성 상태) + // ACTIVE: 찜한 상태, DELETED: 찜 해제한 상태 (Soft Delete) + private WishlistStatus status = WishlistStatus.ACTIVE; +} From 76fa24b4349f8aa2ae7aa33970277799a1bd0586 Mon Sep 17 00:00:00 2001 From: meohin Date: Wed, 17 Sep 2025 16:25:08 +0900 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20WishlistStatus=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - soft delete 관리를 위함 --- .../com/back/domain/wishlist/enums/WishlistStatus.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/main/java/com/back/domain/wishlist/enums/WishlistStatus.java diff --git a/src/main/java/com/back/domain/wishlist/enums/WishlistStatus.java b/src/main/java/com/back/domain/wishlist/enums/WishlistStatus.java new file mode 100644 index 00000000..8ed6c9ca --- /dev/null +++ b/src/main/java/com/back/domain/wishlist/enums/WishlistStatus.java @@ -0,0 +1,9 @@ +package com.back.domain.wishlist.enums; + +import lombok.Getter; + +@Getter +public enum WishlistStatus { + ACTIVE, + DELETED +} From 1b6de507c2a2fca4ae279246c2cb40a348fa1365 Mon Sep 17 00:00:00 2001 From: meohin Date: Wed, 17 Sep 2025 16:26:07 +0900 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20WishlistRepository=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/wishlist/repository/WishlistRepository.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/main/java/com/back/domain/wishlist/repository/WishlistRepository.java diff --git a/src/main/java/com/back/domain/wishlist/repository/WishlistRepository.java b/src/main/java/com/back/domain/wishlist/repository/WishlistRepository.java new file mode 100644 index 00000000..e09d66c0 --- /dev/null +++ b/src/main/java/com/back/domain/wishlist/repository/WishlistRepository.java @@ -0,0 +1,9 @@ +package com.back.domain.wishlist.repository; + +import com.back.domain.wishlist.entity.Wishlist; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface WishlistRepository extends JpaRepository { +} From ff0006b37311ad4718ed0256b82af4e7d59cb00b Mon Sep 17 00:00:00 2001 From: meohin Date: Wed, 17 Sep 2025 16:34:27 +0900 Subject: [PATCH 4/5] =?UTF-8?q?chore:=20.gitignore=EC=97=90=20db=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index c2065bc2..992bd44c 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,7 @@ out/ ### VS Code ### .vscode/ + +### Custom ### +db_dev.mv.db +db_dev.trace.db \ No newline at end of file From cbefc6a0f362f142fcb7a1ddd45c7f8a481c37a6 Mon Sep 17 00:00:00 2001 From: meohin Date: Wed, 17 Sep 2025 16:48:23 +0900 Subject: [PATCH 5/5] =?UTF-8?q?feat:=20Wishlist=20=EC=9A=94=EC=B2=AD/?= =?UTF-8?q?=EC=9D=91=EB=8B=B5=20DTO=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wishlist/dto/WishlistRequestDto.java | 22 +++++++++++++ .../wishlist/dto/WishlistResponseDto.java | 32 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/main/java/com/back/domain/wishlist/dto/WishlistRequestDto.java create mode 100644 src/main/java/com/back/domain/wishlist/dto/WishlistResponseDto.java diff --git a/src/main/java/com/back/domain/wishlist/dto/WishlistRequestDto.java b/src/main/java/com/back/domain/wishlist/dto/WishlistRequestDto.java new file mode 100644 index 00000000..ec91f985 --- /dev/null +++ b/src/main/java/com/back/domain/wishlist/dto/WishlistRequestDto.java @@ -0,0 +1,22 @@ +package com.back.domain.wishlist.dto; + +import com.back.domain.wishlist.enums.WishlistStatus; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class WishlistRequestDto { + + @NotNull + private Long userId; + + // 생성 시 기본값 ACTIVE, 필요시 상태 지정 업데이트용으로 재사용 가능 + private WishlistStatus status; +} + diff --git a/src/main/java/com/back/domain/wishlist/dto/WishlistResponseDto.java b/src/main/java/com/back/domain/wishlist/dto/WishlistResponseDto.java new file mode 100644 index 00000000..ee4de3a1 --- /dev/null +++ b/src/main/java/com/back/domain/wishlist/dto/WishlistResponseDto.java @@ -0,0 +1,32 @@ +package com.back.domain.wishlist.dto; + +import com.back.domain.wishlist.entity.Wishlist; +import com.back.domain.wishlist.enums.WishlistStatus; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class WishlistResponseDto { + private Long id; + private Long userId; + private WishlistStatus status; + private LocalDateTime createdAt; + + public static WishlistResponseDto from(Wishlist wishlist) { + if (wishlist == null) return null; + return WishlistResponseDto.builder() + .id(wishlist.getId()) + .userId(wishlist.getUser() != null ? wishlist.getUser().getId() : null) + .status(wishlist.getStatus()) + .createdAt(wishlist.getCreatedAt()) + .build(); + } +} +