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 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(); + } +} + 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; +} 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 +} 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 { +}