Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.back.domain.cocktail.comment.dto;

import com.back.domain.post.comment.enums.CommentStatus;
import jakarta.validation.constraints.NotBlank;

public record CocktailCommentCreateRequestDto(
CommentStatus status,
@NotBlank(message = "내용은 필수입니다.")
String content
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.back.domain.cocktail.comment.dto;

import com.back.domain.cocktail.comment.entity.CocktailComment;
import com.back.domain.post.comment.enums.CommentStatus;

import java.time.LocalDateTime;

public record CocktailCommentResponseDto(
Long commentId,
Long postId,
String userNickName,
LocalDateTime createdAt,
LocalDateTime updatedAt,
CommentStatus status,
String content
) {
public CocktailCommentResponseDto(CocktailComment cocktailcomment) {
this(
cocktailcomment.getId(),
cocktailcomment.getCocktail().getId(),
cocktailcomment.getUser().getNickname(),
cocktailcomment.getCreatedAt(),
cocktailcomment.getUpdatedAt(),
cocktailcomment.getStatus(),
cocktailcomment.getContent()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.back.domain.cocktail.comment.dto;

import com.back.domain.post.comment.enums.CommentStatus;

public record CocktailCommentUpdateRequestDto(
CommentStatus status,
String content
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.back.domain.cocktail.comment.entity;

import com.back.domain.cocktail.entity.Cocktail;
import com.back.domain.post.comment.enums.CommentStatus;
import com.back.domain.user.entity.User;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.LocalDateTime;

@Entity
@Getter
@Table(name = "cocktailcomment")
@EntityListeners(AuditingEntityListener.class)
@NoArgsConstructor(access = lombok.AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
public class CocktailComment {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

// 해당 칵테일댓글이 작성된 게시글의 고유 식별자
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cocktail_id")
private Cocktail cocktail;

// 해당 칵테일댓글을 작성한 유저의 고유 식별자
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

// 칵테일댓글 작성 날짜
@CreatedDate
private LocalDateTime createdAt;

// 칵테일댓글 수정 날짜
@LastModifiedDate
private LocalDateTime updatedAt;

// 칵테일댓글 게시 상태 (기본값: 공개)
@Builder.Default
@Enumerated(EnumType.STRING)
@Column(name = "status", nullable = false)
private CommentStatus status = CommentStatus.PUBLIC;

// 칵테일댓글 내용
@Column(name = "content", nullable = false, columnDefinition = "TEXT")
private String content;

public void updateStatus(CommentStatus status) {
this.status = status;
}

public void updateContent(String content) {
this.content = content;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.back.domain.cocktail.comment.repository;

import com.back.domain.post.comment.entity.Comment;
import org.springframework.data.jpa.repository.JpaRepository;

public interface CocktailCommentRepository extends JpaRepository<Comment, Long> {

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public ResponseEntity<RsData<Map<String, String>>> getShareLink(@PathVariable Lo
.map(cocktail -> {
Map<String, String> response = Map.of(
// 공유 URL
"url", "https://www.ssoul.or/cocktails/" + cocktail.getCocktailId(),
"url", "https://www.ssoul.or/cocktails/" + cocktail.getId(),
// 공유 제목
"title", cocktail.getCocktailName(),
// 공유 이미지 (선택)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public CocktailDetailResponseDto(
}

public CocktailDetailResponseDto(Cocktail cocktail) {
this.cocktailId = cocktail.getCocktailId();
this.cocktailId = cocktail.getId();
this.cocktailName = cocktail.getCocktailName();
this.alcoholStrength = cocktail.getAlcoholStrength();
this.cocktailType = cocktail.getCocktailType();
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/com/back/domain/cocktail/entity/Cocktail.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@
import com.back.domain.cocktail.enums.CocktailType;
import jakarta.persistence.*;
import lombok.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;

import java.time.LocalDateTime;

import static jakarta.persistence.GenerationType.IDENTITY;


Expand All @@ -19,7 +23,7 @@
public class Cocktail {
@Id
@GeneratedValue(strategy = IDENTITY)
private long cocktailId;
private long id;

private String cocktailName;

Expand All @@ -40,7 +44,9 @@ public class Cocktail {

private String cocktailImgUrl;

@CreatedDate
private LocalDateTime createdAt;

@LastModifiedDate
private LocalDateTime updatedAt;
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
public interface CocktailRepository extends JpaRepository<Cocktail, Long> {

// 첫 요청 → 최신순(내림차순)으로 정렬해서 가져오기
List<Cocktail> findAllByOrderByCocktailIdDesc(Pageable pageable);
List<Cocktail> findAllByOrderByIdDesc(Pageable pageable);

// 무한스크롤 → lastId보다 작은 ID들 가져오기
List<Cocktail> findByCocktailIdLessThanOrderByCocktailIdDesc(Long lastId, Pageable pageable);
List<Cocktail> findByIdLessThanOrderByIdDesc(Long lastId, Pageable pageable);

List<Cocktail> findByCocktailNameContainingIgnoreCaseOrIngredientContainingIgnoreCase(String cocktailName, String ingredient);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ public List<CocktailSummaryResponseDto> getCocktails (Long lastId, Integer size)
List<Cocktail> cocktails;
if (lastId == null) {
// 첫 요청 → 최신 데이터부터
cocktails = cocktailRepository.findAllByOrderByCocktailIdDesc(PageRequest.of(0, fetchSize));
cocktails = cocktailRepository.findAllByOrderByIdDesc(PageRequest.of(0, fetchSize));
} else {
// 무한스크롤 → 마지막 ID보다 작은 데이터 조회
cocktails = cocktailRepository.findByCocktailIdLessThanOrderByCocktailIdDesc(lastId, PageRequest.of(0, fetchSize));
cocktails = cocktailRepository.findByIdLessThanOrderByIdDesc(lastId, PageRequest.of(0, fetchSize));
}
return cocktails.stream()
.map(c -> new CocktailSummaryResponseDto(c.getCocktailId(), c.getCocktailName(), c.getCocktailImgUrl()))
.map(c -> new CocktailSummaryResponseDto(c.getId(), c.getCocktailName(), c.getCocktailImgUrl()))
.collect(Collectors.toList());
}

Expand Down Expand Up @@ -106,7 +106,7 @@ public List<CocktailSearchResponseDto> searchAndFilter (CocktailSearchRequestDto
//Cocktail 엔티티 → CocktailResponseDto 응답 DTO로 바꿔주는 과정
List<CocktailSearchResponseDto> resultDtos = pageResult.stream()
.map(c -> new CocktailSearchResponseDto(
c.getCocktailId(),
c.getId(),
c.getCocktailName(),
c.getAlcoholStrength(),
c.getCocktailType(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class MyBarItemResponseDto {
public static MyBarItemResponseDto from(MyBar m) {
return MyBarItemResponseDto.builder()
.id(m.getId())
.cocktailId(m.getCocktail().getCocktailId())
.cocktailId(m.getCocktail().getId())
.cocktailName(m.getCocktail().getCocktailName())
.imageUrl(m.getCocktail().getCocktailImgUrl())
.createdAt(m.getCreatedAt())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@ public interface MyBarRepository extends JpaRepository<MyBar, Long> {
long countByUser_IdAndStatus(Long userId, KeepStatus status);

/** 현재 킵 상태 확인(아이콘 등): ACTIVE 존재 여부 */
boolean existsByUser_IdAndCocktail_CocktailIdAndStatus(Long userId, Long cocktailId, KeepStatus status);
boolean existsByUser_IdAndCocktail_IdAndStatus(Long userId, Long cocktailId, KeepStatus status);

/** 복원/재킵을 위해 status 무시하고 한 건 찾기 (없으면 Optional.empty) */
Optional<MyBar> findByUser_IdAndCocktail_CocktailId(Long userId, Long cocktailId);
Optional<MyBar> findByUser_IdAndCocktail_Id(Long userId, Long cocktailId);

@Modifying(clearAutomatically = true, flushAutomatically = true)
@Query("""
update MyBar m
set m.status = 'DELETED', m.deletedAt = CURRENT_TIMESTAMP
where m.user.id = :userId
and m.cocktail.cocktailId = :cocktailId
and m.cocktail.id = :cocktailId
and m.status = 'ACTIVE'
""")
int softDeleteByUserAndCocktail(Long userId, Long cocktailId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public MyBarListResponseDto getMyBar(Long userId, LocalDateTime lastKeptAt, Long
@Transactional
public void keep(Long userId, Long cocktailId) {
Optional<MyBar> existingMyBar =
myBarRepository.findByUser_IdAndCocktail_CocktailId(userId, cocktailId);
myBarRepository.findByUser_IdAndCocktail_Id(userId, cocktailId);

LocalDateTime now = LocalDateTime.now();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ void t1() throws Exception {

// when: GET 요청
ResultActions resultActions = mvc.perform(
get("/api/cocktails/{id}", savedCocktail.getCocktailId())
get("/api/cocktails/{id}", savedCocktail.getId())
.contentType(MediaType.APPLICATION_JSON)
).andDo(print());

Expand Down