-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
diaryphoto가 추가됨에 따라 쿼리 로직 수정 레포지 쪽 대폭 수정 엔티티 나중에 머지 필요
- Loading branch information
1 parent
165a095
commit 16c445d
Showing
4 changed files
with
76 additions
and
64 deletions.
There are no files selected for viewing
38 changes: 13 additions & 25 deletions
38
src/main/java/com/kuit/chatdiary/dto/diary/TagSearchResponseDTO.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,25 @@ | ||
package com.kuit.chatdiary.dto.diary; | ||
|
||
import com.kuit.chatdiary.domain.*; | ||
import lombok.*; | ||
|
||
import com.kuit.chatdiary.domain.Photo; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import lombok.Setter; | ||
import java.time.LocalDateTime; | ||
import java.util.Date; | ||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
|
||
@Getter | ||
@Setter | ||
@NoArgsConstructor | ||
public class TagSearchResponseDTO { | ||
|
||
private Long diaryId; | ||
private String title; | ||
private String content; | ||
private Date diaryDate; | ||
private List<TagInfoDTO> tagList; | ||
private List<String> photoList; | ||
|
||
@Builder | ||
public TagSearchResponseDTO(Diary diary){ | ||
this.diaryId = diary.getDiaryId(); | ||
this.title = diary.getTitle(); | ||
this.diaryDate = diary.getDiaryDate(); | ||
this.tagList = diary.getDiaryTagList().stream() | ||
.map(diaryTag -> { | ||
TagInfoDTO TagInfoDTO = new TagInfoDTO(); | ||
TagInfoDTO.setTagId(diaryTag.getTag().getTagId()); | ||
TagInfoDTO.setTagName(diaryTag.getTag().getTagName()); | ||
return TagInfoDTO; | ||
}) | ||
.collect(Collectors.toList()); | ||
this.photoList = diary.getPhotoList().stream() | ||
.map(Photo::getImageUrl) | ||
.collect(Collectors.toList()); | ||
} | ||
} | ||
private LocalDateTime createAt; | ||
private LocalDateTime updateAt; | ||
private String status; | ||
private List<String> tagList; | ||
private List<String> photoUrls; | ||
} |
36 changes: 0 additions & 36 deletions
36
src/main/java/com/kuit/chatdiary/repository/TagSearchRepository.java
This file was deleted.
Oops, something went wrong.
61 changes: 61 additions & 0 deletions
61
src/main/java/com/kuit/chatdiary/repository/diary/TagSearchRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
package com.kuit.chatdiary.repository.diary; | ||
|
||
import com.kuit.chatdiary.domain.Diary; | ||
import com.kuit.chatdiary.dto.diary.TagSearchResponseDTO; | ||
import jakarta.persistence.EntityManager; | ||
import org.springframework.stereotype.Repository; | ||
|
||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
|
||
@Repository | ||
public class TagSearchRepository { | ||
private final EntityManager em; | ||
|
||
public TagSearchRepository(EntityManager em) { | ||
this.em = em; | ||
} | ||
|
||
|
||
/** 지식 한계로 쿼리문 세개를 나눠서.. */ | ||
public List<TagSearchResponseDTO> findByTag(List<String> tagName) { | ||
int tagCount = tagName.size(); | ||
List<Diary> diaries = em.createQuery( | ||
"SELECT d FROM diary d " + | ||
"JOIN diarytag dt ON d.diaryId = dt.diary.diaryId " + | ||
"JOIN tag t ON dt.tag.tagId = t.tagId " + | ||
"WHERE t.tagName IN :tagNames " + | ||
"GROUP BY d " + | ||
"HAVING COUNT(DISTINCT t) = :tagCount", Diary.class) | ||
.setParameter("tagNames", tagName) | ||
.setParameter("tagCount", (long) tagCount) | ||
.getResultList(); | ||
|
||
return diaries.stream().map(diary -> { | ||
TagSearchResponseDTO response = new TagSearchResponseDTO(); | ||
response.setDiaryId(diary.getDiaryId()); | ||
response.setTitle(diary.getTitle()); | ||
response.setContent(diary.getContent()); | ||
response.setDiaryDate(diary.getDiaryDate()); | ||
response.setCreateAt(diary.getCreateAt()); | ||
response.setUpdateAt(diary.getUpdateAt()); | ||
response.setStatus(diary.getStatus()); | ||
|
||
List<String> photoUrls = em.createQuery( | ||
"SELECT dp.photo.imageUrl FROM diaryphoto dp WHERE dp.diary.diaryId = :diaryId", String.class) | ||
.setParameter("diaryId", diary.getDiaryId()) | ||
.getResultList(); | ||
response.setPhotoUrls(photoUrls); | ||
|
||
List<String> tagNames = em.createQuery( | ||
"SELECT t.tagName FROM diarytag dt JOIN dt.tag t WHERE dt.diary.diaryId = :diaryId", String.class) | ||
.setParameter("diaryId", diary.getDiaryId()) | ||
.getResultList(); | ||
response.setTagList(tagNames); | ||
|
||
return response; | ||
}).collect(Collectors.toList()); | ||
} | ||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters