Skip to content

Commit

Permalink
Feat: 로직 수정
Browse files Browse the repository at this point in the history
diaryphoto가 추가됨에 따라 쿼리 로직 수정
  • Loading branch information
Mouon committed Jan 28, 2024
1 parent 9fd8048 commit 0e45eba
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 42 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
package com.kuit.chatdiary.dto.diary;

import com.kuit.chatdiary.domain.Diary;
import com.kuit.chatdiary.domain.DiaryPhoto;
import com.kuit.chatdiary.domain.DiaryTag;
import com.kuit.chatdiary.domain.Photo;
import lombok.*;
import com.kuit.chatdiary.domain.Tag;
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;
Expand All @@ -13,26 +19,21 @@
@NoArgsConstructor
public class DiaryListResponseDTO {
private Long diaryId;
private Long userId;
private String title;
private Date diaryDate;
private List<String> photoUrls;
private List<TagInfoDTO> tagList;
private List<String> photoList;
@Builder
public DiaryListResponseDTO(Diary diary){

public DiaryListResponseDTO(Diary diary, List<DiaryPhoto> diaryPhotos, List<DiaryTag> diaryTags) {
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()
this.photoUrls = diaryPhotos.stream()
.map(DiaryPhoto::getPhoto)
.map(Photo::getImageUrl)
.collect(Collectors.toList());
this.tagList = diaryTags.stream()
.map(diaryTag -> new TagInfoDTO(diaryTag.getTag().getTagId(), diaryTag.getTag().getTagName()))
.collect(Collectors.toList());
}
}
}
2 changes: 2 additions & 0 deletions src/main/java/com/kuit/chatdiary/dto/diary/TagInfoDTO.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.kuit.chatdiary.dto.diary;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class TagInfoDTO {
private Long tagId;
private String tagName;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.kuit.chatdiary.repository.diary;

import com.kuit.chatdiary.domain.Diary;
import com.kuit.chatdiary.domain.DiaryPhoto;
import com.kuit.chatdiary.domain.DiaryTag;
import com.kuit.chatdiary.dto.diary.DiaryListResponseDTO;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TemporalType;
Expand All @@ -11,23 +13,34 @@
import java.util.List;
import java.util.stream.Collectors;


@Repository
public class DiaryListRepository {
private final EntityManager em;
public DiaryListRepository(EntityManager em){
this.em=em;
}
private final EntityManager em;

public DiaryListRepository(EntityManager em) {
this.em = em;
}

public List<DiaryListResponseDTO> inquiryDiaryRange(Long userId, Date startDate, Date endDate) {
List<Diary> diaries=em.createQuery("SELECT d FROM diary d LEFT JOIN FETCH d.diaryTagList WHERE d.member.userId = :userId AND d.diaryDate BETWEEN :startDate AND :endDate", Diary.class)
.setParameter("userId", userId)
.setParameter("startDate", startDate, TemporalType.DATE)
.setParameter("endDate", endDate,TemporalType.DATE)
.getResultList();

return diaries.stream()
.map(DiaryListResponseDTO::new)
.collect(Collectors.toList());
/** 우선 쿼리 세개 날리기.. */
public List<DiaryListResponseDTO> inquiryDiaryRange(Long userId, Date startDate, Date endDate) {
List<Diary> diaries = em.createQuery("SELECT d FROM diary d WHERE d.member.userId = :userId AND d.diaryDate BETWEEN :startDate AND :endDate", Diary.class)
.setParameter("userId", userId)
.setParameter("startDate", startDate, TemporalType.DATE)
.setParameter("endDate", endDate, TemporalType.DATE)
.getResultList();

return diaries.stream().map(diary -> {
List<DiaryPhoto> diaryPhotos = em.createQuery("SELECT dp FROM diaryphoto dp WHERE dp.diary = :diary", DiaryPhoto.class)
.setParameter("diary", diary)
.getResultList();
List<DiaryTag> diaryTags = em.createQuery("SELECT dt FROM diarytag dt WHERE dt.diary = :diary", DiaryTag.class)
.setParameter("diary", diary)
.getResultList();

return new DiaryListResponseDTO(diary, diaryPhotos, diaryTags);
}).collect(Collectors.toList());
}
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,16 @@ public class DiaryListService {
private final DiaryListRepository diaryListRepository;

public DiaryListService(DiaryListRepository diaryListRepository){
this.diaryListRepository=diaryListRepository;
this.diaryListRepository = diaryListRepository;
}

/**
* diary.getPhotoList().size(); 를 통해 jpa가 각 객체의 사진 목록 로드
* */

public List<DiaryListResponseDTO> getMonthlyDiaryPhotos(Long userId, int year, int month){
LocalDate firstDayOfMonthLocal =LocalDate.of(year,month,1);
LocalDate lastDayOfMonthLocal =firstDayOfMonthLocal.plusMonths(1).minusDays(1);
LocalDate firstDayOfMonthLocal = LocalDate.of(year, month, 1);
LocalDate lastDayOfMonthLocal = firstDayOfMonthLocal.plusMonths(1).minusDays(1);

Date firstDayOfMonth = Date.valueOf(firstDayOfMonthLocal);
Date lastDayOfMonth = Date.valueOf(lastDayOfMonthLocal);

List<DiaryListResponseDTO> diaries = diaryListRepository.inquiryDiaryRange(userId, firstDayOfMonth, lastDayOfMonth);
diaries.forEach(diary -> diary.getPhotoList());
return diaries;
return diaryListRepository.inquiryDiaryRange(userId, firstDayOfMonth, lastDayOfMonth);
}

}
}

0 comments on commit 0e45eba

Please sign in to comment.