diff --git a/src/main/java/io/sobok/SobokSobok/pill/infrastructure/PillScheduleQueryRepository.java b/src/main/java/io/sobok/SobokSobok/pill/infrastructure/PillScheduleQueryRepository.java index a8a3b6e..dd56eea 100644 --- a/src/main/java/io/sobok/SobokSobok/pill/infrastructure/PillScheduleQueryRepository.java +++ b/src/main/java/io/sobok/SobokSobok/pill/infrastructure/PillScheduleQueryRepository.java @@ -1,23 +1,21 @@ package io.sobok.SobokSobok.pill.infrastructure; import com.querydsl.core.Tuple; -import com.querydsl.core.types.Projections; import com.querydsl.core.types.dsl.CaseBuilder; import com.querydsl.jpa.impl.JPAQueryFactory; -import io.sobok.SobokSobok.pill.domain.PillSchedule; import io.sobok.SobokSobok.pill.domain.QPill; import io.sobok.SobokSobok.pill.domain.QPillSchedule; import io.sobok.SobokSobok.pill.ui.dto.DateScheduleResponse; import io.sobok.SobokSobok.pill.ui.dto.MonthScheduleResponse; import io.sobok.SobokSobok.pill.ui.dto.PillScheduleInfo; +import io.sobok.SobokSobok.pill.ui.dto.StickerInfo; import io.sobok.SobokSobok.sticker.domain.QLikeSchedule; import io.sobok.SobokSobok.sticker.domain.QSticker; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Repository; - import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; @Repository @RequiredArgsConstructor @@ -106,17 +104,22 @@ public List getDateSchedule(Long userId, LocalDate date) { .where(pillSchedule.scheduleDate.eq(date), pillSchedule.scheduleTime.eq(time)) .fetch(); - Map> stickerIdMap = pillScheduleIds.stream() + Map> stickerIdMap = pillScheduleIds.stream() .collect(Collectors.toMap(id -> id, id -> queryFactory - .select(likeSchedule.stickerId) + .select(likeSchedule.stickerId, likeSchedule.id) .from(likeSchedule) .where(likeSchedule.scheduleId.eq(id)) - .fetch())); + .fetch().stream() + .map(tuple -> StickerInfo.builder() + .stickerId(tuple.get(0, Long.class)) + .likeScheduleId(tuple.get(1, Long.class)) + .build() + ).collect(Collectors.toList()))); // 결과 매핑 List pillScheduleInfoList = pillScheduleIds.stream() .flatMap(scheduleId -> { - List stickerIds = stickerIdMap.getOrDefault(scheduleId, Collections.emptyList()); + List stickerIds = stickerIdMap.getOrDefault(scheduleId, Collections.emptyList()); return queryFactory .select( pillSchedule.id, diff --git a/src/main/java/io/sobok/SobokSobok/pill/ui/dto/PillScheduleInfo.java b/src/main/java/io/sobok/SobokSobok/pill/ui/dto/PillScheduleInfo.java index a2722aa..1bd34d0 100644 --- a/src/main/java/io/sobok/SobokSobok/pill/ui/dto/PillScheduleInfo.java +++ b/src/main/java/io/sobok/SobokSobok/pill/ui/dto/PillScheduleInfo.java @@ -1,19 +1,18 @@ package io.sobok.SobokSobok.pill.ui.dto; -import lombok.Builder; - import java.util.List; +import lombok.Builder; @Builder public record PillScheduleInfo( - Long scheduleId, - Long pillId, - String pillName, - Boolean isCheck, - Integer color, - List stickerId, - Long stickerTotalCount + Long scheduleId, + Long pillId, + String pillName, + Boolean isCheck, + Integer color, + List stickerId, + Long stickerTotalCount ) { } diff --git a/src/main/java/io/sobok/SobokSobok/pill/ui/dto/StickerInfo.java b/src/main/java/io/sobok/SobokSobok/pill/ui/dto/StickerInfo.java new file mode 100644 index 0000000..03a9de4 --- /dev/null +++ b/src/main/java/io/sobok/SobokSobok/pill/ui/dto/StickerInfo.java @@ -0,0 +1,11 @@ +package io.sobok.SobokSobok.pill.ui.dto; + +import lombok.Builder; + +@Builder +public record StickerInfo( + Long stickerId, + Long likeScheduleId +) { + +}