From 0105fd36e59c0f0f3ae45f0a72e9b64d7052f1ad Mon Sep 17 00:00:00 2001 From: Taehun88 Date: Mon, 10 Feb 2025 12:39:19 +0900 Subject: [PATCH 1/2] feat: user searching function --- .../prdoit/controller/ContentController.java | 2 +- .../com/example/prdoit/model/IdTable.java | 3 +++ .../service/content/ContentServiceImpl.java | 26 ++++++++++++------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/prdoit/controller/ContentController.java b/src/main/java/com/example/prdoit/controller/ContentController.java index d104b2b..5119c37 100644 --- a/src/main/java/com/example/prdoit/controller/ContentController.java +++ b/src/main/java/com/example/prdoit/controller/ContentController.java @@ -25,7 +25,7 @@ public ResponseEntity getAllContent(@RequestParam(value = "query", requi @RequestParam(value = "size", required = false, defaultValue = "5") int size, @RequestParam(value = "page", required = false, defaultValue = "1") int page) { try{ - if(level == -1){ + if(level == -1 && userId.isEmpty()){ return ResponseEntity.ok(contentService.getContentQuery(query, size, page)); } else if(userId.isEmpty()){ return ResponseEntity.ok(contentService.getContentQueryWithLevel(query, level, size, page)); diff --git a/src/main/java/com/example/prdoit/model/IdTable.java b/src/main/java/com/example/prdoit/model/IdTable.java index d3ab371..eaec3ef 100644 --- a/src/main/java/com/example/prdoit/model/IdTable.java +++ b/src/main/java/com/example/prdoit/model/IdTable.java @@ -43,5 +43,8 @@ public class IdTable { @JsonIgnore private List communityTable; + @OneToMany(mappedBy = "userId", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.EAGER) + @JsonIgnore + private List contentTable; } diff --git a/src/main/java/com/example/prdoit/service/content/ContentServiceImpl.java b/src/main/java/com/example/prdoit/service/content/ContentServiceImpl.java index a7eb112..4419f79 100644 --- a/src/main/java/com/example/prdoit/service/content/ContentServiceImpl.java +++ b/src/main/java/com/example/prdoit/service/content/ContentServiceImpl.java @@ -84,17 +84,23 @@ public List getContentQueryWithLevel(String query, int level @Override public List getContentWithUserId(String userId){ - log.info("[getContentWithUserId] 사용자별 컨텐츠 조회 로직 시작"); - try { - List contentResponseDtoList = contentRepository.findAllByUserId(userId); - if(contentResponseDtoList.isEmpty()){ - throw new RuntimeException("등록된 컨텐츠가 없습니다."); - } else { - return contentResponseDtoList; - } + IdTable idTable = IdTableRepository.findById(userId).orElseThrow + (() -> new RuntimeException("존재하지 않는 사용자입니다.")); + if(idTable.getContentTable().isEmpty()) { + throw new RuntimeException("등록된 컨텐츠가 없습니다."); + } + try{ + return idTable.getContentTable().stream().map(contentTable -> ContentResponseDto.builder() + .contentId(contentTable.getContentId()) + .contentTitle(contentTable.getContentTitle()) + .contentView(contentTable.getContentView()) + .contentLike(contentTable.getContentLike()) + .contentLevel(contentTable.getContentLevel()) + .writer(contentTable.getUserId().getNickname()) + .build()).toList(); } catch (Exception e) { - log.error("[getContentWithUserId] 사용자별 컨텐츠 조회 실패"); - throw new RuntimeException("사용자별 컨텐츠 조회에 실패했습니다."); + log.error(e.getMessage()); + throw new RuntimeException("쿼리 조회에 실패했습니다."); } } From 21c1820e8b096aad18623c5273446a0a3dcb399a Mon Sep 17 00:00:00 2001 From: Taehun88 Date: Tue, 11 Feb 2025 14:03:25 +0900 Subject: [PATCH 2/2] add repo --- .../java/com/example/prdoit/model/CommentTable.java | 6 ++++++ .../java/com/example/prdoit/model/ContentTable.java | 7 +++++++ .../repository/CommentCommentTableRepository.java | 13 +++++++++++++ .../prdoit/repository/CommentTableRepository.java | 9 +++++++++ 4 files changed, 35 insertions(+) create mode 100644 src/main/java/com/example/prdoit/repository/CommentCommentTableRepository.java create mode 100644 src/main/java/com/example/prdoit/repository/CommentTableRepository.java diff --git a/src/main/java/com/example/prdoit/model/CommentTable.java b/src/main/java/com/example/prdoit/model/CommentTable.java index ca0f6d0..e35c9e7 100644 --- a/src/main/java/com/example/prdoit/model/CommentTable.java +++ b/src/main/java/com/example/prdoit/model/CommentTable.java @@ -1,5 +1,6 @@ package com.example.prdoit.model; +import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.annotation.Nullable; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -8,6 +9,7 @@ import lombok.NoArgsConstructor; import java.time.LocalDateTime; +import java.util.List; @Entity @Data @@ -34,4 +36,8 @@ public class CommentTable { @JoinColumn(name = "communityId", nullable = true) private CommunityTable communityId; + @OneToMany(mappedBy = "commentId") + @JsonIgnore + private List commentCommentTable; + } diff --git a/src/main/java/com/example/prdoit/model/ContentTable.java b/src/main/java/com/example/prdoit/model/ContentTable.java index e4cb944..be275a2 100644 --- a/src/main/java/com/example/prdoit/model/ContentTable.java +++ b/src/main/java/com/example/prdoit/model/ContentTable.java @@ -1,8 +1,11 @@ package com.example.prdoit.model; +import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.*; +import java.util.List; + @Data @Entity @AllArgsConstructor @@ -28,4 +31,8 @@ public class ContentTable { @ManyToOne @JoinColumn(name = "userId") private IdTable userId; + + @OneToMany(mappedBy = "contentId", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.EAGER) + @JsonIgnore + private List commentTable; } diff --git a/src/main/java/com/example/prdoit/repository/CommentCommentTableRepository.java b/src/main/java/com/example/prdoit/repository/CommentCommentTableRepository.java new file mode 100644 index 0000000..cc9c441 --- /dev/null +++ b/src/main/java/com/example/prdoit/repository/CommentCommentTableRepository.java @@ -0,0 +1,13 @@ +package com.example.prdoit.repository; + +import com.example.prdoit.model.CommentCommentTable; +import com.example.prdoit.model.CommentTable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CommentCommentTableRepository extends JpaRepository { + List findAllByCommentId(CommentTable commentId); +} diff --git a/src/main/java/com/example/prdoit/repository/CommentTableRepository.java b/src/main/java/com/example/prdoit/repository/CommentTableRepository.java new file mode 100644 index 0000000..a0f58d1 --- /dev/null +++ b/src/main/java/com/example/prdoit/repository/CommentTableRepository.java @@ -0,0 +1,9 @@ +package com.example.prdoit.repository; + +import com.example.prdoit.model.CommentTable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface CommentTableRepository extends JpaRepository { +}