diff --git a/src/main/java/com/amcamp/domain/wishlist/api/WishlistController.java b/src/main/java/com/amcamp/domain/wishlist/api/WishlistController.java new file mode 100644 index 0000000..1c198b3 --- /dev/null +++ b/src/main/java/com/amcamp/domain/wishlist/api/WishlistController.java @@ -0,0 +1,20 @@ +package com.amcamp.domain.wishlist.api; + +import com.amcamp.domain.wishlist.application.WishlistService; +import com.amcamp.domain.wishlist.dto.request.WishlistCreateRequest; +import com.amcamp.domain.wishlist.dto.response.WishlistInfoResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/wishlist") +@RequiredArgsConstructor +public class WishlistController { + private final WishlistService wishlistService; + + + @PostMapping + public WishlistInfoResponse createWishlist(@RequestBody WishlistCreateRequest request){ + return wishlistService.createWishlist(request); + } +} diff --git a/src/main/java/com/amcamp/domain/wishlist/application/WishlistService.java b/src/main/java/com/amcamp/domain/wishlist/application/WishlistService.java new file mode 100644 index 0000000..49770db --- /dev/null +++ b/src/main/java/com/amcamp/domain/wishlist/application/WishlistService.java @@ -0,0 +1,26 @@ +package com.amcamp.domain.wishlist.application; + +import com.amcamp.domain.member.domain.Member; +import com.amcamp.domain.wishlist.dao.WishlistRepository; +import com.amcamp.domain.wishlist.domain.Wishlist; +import com.amcamp.domain.wishlist.dto.request.WishlistCreateRequest; +import com.amcamp.domain.wishlist.dto.response.WishlistInfoResponse; +import com.amcamp.global.util.MemberUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class WishlistService { + private final WishlistRepository wishlistRepository; + private final MemberUtil memberUtil; + + public WishlistInfoResponse createWishlist(WishlistCreateRequest request) { + Member member = memberUtil.getCurrentMember(); + Wishlist wishlist = wishlistRepository.save(Wishlist.createWishlist(member, request.title())); + return new WishlistInfoResponse(wishlist.getId(), wishlist.getTitle()); + } +} + diff --git a/src/main/java/com/amcamp/domain/wishlist/dao/WishlistRepository.java b/src/main/java/com/amcamp/domain/wishlist/dao/WishlistRepository.java new file mode 100644 index 0000000..d130ce5 --- /dev/null +++ b/src/main/java/com/amcamp/domain/wishlist/dao/WishlistRepository.java @@ -0,0 +1,10 @@ +package com.amcamp.domain.wishlist.dao; + +import com.amcamp.domain.member.domain.Member; +import com.amcamp.domain.wishlist.domain.Wishlist; +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + +public interface WishlistRepository extends JpaRepository { + List findByMember(Member member); +} diff --git a/src/main/java/com/amcamp/domain/wishlist/domain/Wishlist.java b/src/main/java/com/amcamp/domain/wishlist/domain/Wishlist.java new file mode 100644 index 0000000..806bc57 --- /dev/null +++ b/src/main/java/com/amcamp/domain/wishlist/domain/Wishlist.java @@ -0,0 +1,38 @@ +package com.amcamp.domain.wishlist.domain; + + +import com.amcamp.domain.common.model.BaseTimeEntity; +import com.amcamp.domain.member.domain.Member; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Wishlist extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "wishlist_id") + private Long id; + + @Column(nullable = false, length = 50) + private String title; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id", nullable = false) + private Member member; + + @Builder(access = AccessLevel.PRIVATE) + private Wishlist(Member member, String title) { + this.member = member; + this.title = title; + } + + public static Wishlist createWishlist(Member member, String title) { + return Wishlist.builder().member(member).title(title).build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/amcamp/domain/wishlist/dto/request/WishlistCreateRequest.java b/src/main/java/com/amcamp/domain/wishlist/dto/request/WishlistCreateRequest.java new file mode 100644 index 0000000..f76e58f --- /dev/null +++ b/src/main/java/com/amcamp/domain/wishlist/dto/request/WishlistCreateRequest.java @@ -0,0 +1,6 @@ +package com.amcamp.domain.wishlist.dto.request; + + + +public record WishlistCreateRequest(String title) { +} \ No newline at end of file diff --git a/src/main/java/com/amcamp/domain/wishlist/dto/response/WishlistInfoResponse.java b/src/main/java/com/amcamp/domain/wishlist/dto/response/WishlistInfoResponse.java new file mode 100644 index 0000000..918ee71 --- /dev/null +++ b/src/main/java/com/amcamp/domain/wishlist/dto/response/WishlistInfoResponse.java @@ -0,0 +1,4 @@ +package com.amcamp.domain.wishlist.dto.response; + +public record WishlistInfoResponse(Long id, String title) { +}