Skip to content

Commit 8c43a92

Browse files
authored
Merge pull request #13 from prgrms-web-devcourse-final-project/feat#8
[feat] Wishlist 도메인 추가#8
2 parents 5f06ede + cbefc6a commit 8c43a92

File tree

6 files changed

+112
-0
lines changed

6 files changed

+112
-0
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,7 @@ out/
3535

3636
### VS Code ###
3737
.vscode/
38+
39+
### Custom ###
40+
db_dev.mv.db
41+
db_dev.trace.db
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.back.domain.wishlist.dto;
2+
3+
import com.back.domain.wishlist.enums.WishlistStatus;
4+
import jakarta.validation.constraints.NotNull;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
10+
@Getter
11+
@NoArgsConstructor
12+
@AllArgsConstructor
13+
@Builder
14+
public class WishlistRequestDto {
15+
16+
@NotNull
17+
private Long userId;
18+
19+
// 생성 시 기본값 ACTIVE, 필요시 상태 지정 업데이트용으로 재사용 가능
20+
private WishlistStatus status;
21+
}
22+
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.back.domain.wishlist.dto;
2+
3+
import com.back.domain.wishlist.entity.Wishlist;
4+
import com.back.domain.wishlist.enums.WishlistStatus;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
10+
import java.time.LocalDateTime;
11+
12+
@Getter
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
@Builder
16+
public class WishlistResponseDto {
17+
private Long id;
18+
private Long userId;
19+
private WishlistStatus status;
20+
private LocalDateTime createdAt;
21+
22+
public static WishlistResponseDto from(Wishlist wishlist) {
23+
if (wishlist == null) return null;
24+
return WishlistResponseDto.builder()
25+
.id(wishlist.getId())
26+
.userId(wishlist.getUser() != null ? wishlist.getUser().getId() : null)
27+
.status(wishlist.getStatus())
28+
.createdAt(wishlist.getCreatedAt())
29+
.build();
30+
}
31+
}
32+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.back.domain.wishlist.entity;
2+
3+
import com.back.domain.user.entity.User;
4+
import com.back.domain.wishlist.enums.WishlistStatus;
5+
import jakarta.persistence.*;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import lombok.Setter;
9+
10+
import java.time.LocalDateTime;
11+
12+
@Entity
13+
@Getter
14+
@Setter
15+
@NoArgsConstructor
16+
public class Wishlist {
17+
18+
@Id
19+
@GeneratedValue(strategy = GenerationType.IDENTITY)
20+
private Long id;
21+
22+
private LocalDateTime createdAt;
23+
24+
@ManyToOne
25+
private User user; // 찜한 사용자 (위시리스트의 주인)
26+
27+
// TODO: Cocktail 도메인 추가 후 활성화
28+
// @ManyToOne
29+
// private Cocktail cocktail;
30+
31+
@Enumerated(EnumType.STRING)
32+
@Column(nullable = false)
33+
// 위시리스트 상태 - 기본값은 ACTIVE (활성 상태)
34+
// ACTIVE: 찜한 상태, DELETED: 찜 해제한 상태 (Soft Delete)
35+
private WishlistStatus status = WishlistStatus.ACTIVE;
36+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.back.domain.wishlist.enums;
2+
3+
import lombok.Getter;
4+
5+
@Getter
6+
public enum WishlistStatus {
7+
ACTIVE,
8+
DELETED
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.back.domain.wishlist.repository;
2+
3+
import com.back.domain.wishlist.entity.Wishlist;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface WishlistRepository extends JpaRepository<Wishlist, Long> {
9+
}

0 commit comments

Comments
 (0)