diff --git a/.DS_Store b/.DS_Store index 917146a..513af85 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/src/main/java/Capstone/AutoScheduler/global/converter/MemberConverter.java b/src/main/java/Capstone/AutoScheduler/global/converter/MemberConverter.java index 0ac0337..e7a77ff 100644 --- a/src/main/java/Capstone/AutoScheduler/global/converter/MemberConverter.java +++ b/src/main/java/Capstone/AutoScheduler/global/converter/MemberConverter.java @@ -38,10 +38,16 @@ public static MemberResponseDTO.SignInResultDTO toSignInResultDTO(Member member) public static MemberResponseDTO.BookmarkPreviewDTO toBookmarkPreviewDTO(Bookmark bookmark) { return MemberResponseDTO.BookmarkPreviewDTO.builder() .memberId(bookmark.getMember().getMemberId()) + .memberName(bookmark.getMember().getName()) .bookmarkId(bookmark.getId()) .generatorId(bookmark.getGenerator().getGeneratorId()) .generatorTitle(bookmark.getGenerator().getGeneratorTitle()) .generatorDetail(bookmark.getGenerator().getGeneratorDetail()) + .sourceType(bookmark.getGenerator().getSourceType()) + .frames(bookmark.getGenerator().getFrames()) + .mapping(bookmark.getGenerator().getMapping()) + .webUrl(bookmark.getGenerator().getWebUrl()) + .isBookmarked(true) .createdAt(bookmark.getCreatedAt()) .build(); } diff --git a/src/main/java/Capstone/AutoScheduler/global/repository/GeneratorRepository.java b/src/main/java/Capstone/AutoScheduler/global/repository/GeneratorRepository.java index e46a88c..e15583a 100644 --- a/src/main/java/Capstone/AutoScheduler/global/repository/GeneratorRepository.java +++ b/src/main/java/Capstone/AutoScheduler/global/repository/GeneratorRepository.java @@ -2,6 +2,8 @@ import Capstone.AutoScheduler.global.domain.entity.Generator; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -10,4 +12,12 @@ public interface GeneratorRepository extends JpaRepository { List findAllByOrderByGeneratorIdDesc(); + + @Query("SELECT g, " + + "CASE WHEN b.member.id = :memberId THEN true ELSE false END AS isBookmarked " + + "FROM Generator g " + + "LEFT JOIN g.bookmarkList b ON b.member.id = :memberId " + + "ORDER BY g.generatorId DESC") + List findAllWithBookmarkStatus(@Param("memberId") Long memberId); + } diff --git a/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryService.java b/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryService.java index ebf7f8f..9660341 100644 --- a/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryService.java +++ b/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryService.java @@ -8,4 +8,5 @@ public interface GeneratorQueryService { Generator findById(Long generatorId); List getGenerators(); + //List getGeneratorsWithBookmarkStatus(Long memberId); } diff --git a/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryServiceImpl.java b/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryServiceImpl.java index 2763f9c..257e8ad 100644 --- a/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryServiceImpl.java +++ b/src/main/java/Capstone/AutoScheduler/global/service/GeneratorService/GeneratorQueryServiceImpl.java @@ -3,6 +3,7 @@ import Capstone.AutoScheduler.global.domain.entity.Generator; import Capstone.AutoScheduler.global.repository.GeneratorRepository; +import Capstone.AutoScheduler.global.web.dto.Generator.GeneratorResponseDTO; import jakarta.transaction.Transactional; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -36,4 +37,10 @@ public Generator findById(Long generatorId) { public List getGenerators() { return generatorRepository.findAllByOrderByGeneratorIdDesc(); } + + +// @Override +// public List getGeneratorsWithBookmarkStatus(Long memberId) { +// return generatorRepository.findAllWithBookmarkStatus(memberId); +// } } diff --git a/src/main/java/Capstone/AutoScheduler/global/web/controller/GeneratorController.java b/src/main/java/Capstone/AutoScheduler/global/web/controller/GeneratorController.java index d2cb3f0..356ae99 100644 --- a/src/main/java/Capstone/AutoScheduler/global/web/controller/GeneratorController.java +++ b/src/main/java/Capstone/AutoScheduler/global/web/controller/GeneratorController.java @@ -35,7 +35,7 @@ public class GeneratorController { // 일정 생성기 저장하기 @PostMapping("/") - @Operation(summary = "일정 생성기 생성하기", description = "일정 생성기를 생성합니다.") + @Operation(summary = "일정 생성기 생성하기", description = "일정 생성기를 생성합니다.") public ApiResponse generatorCreate( @RequestParam Long memberId, //@RequestParam Long sourceId, @@ -70,4 +70,14 @@ public ApiResponse findGenerators( GeneratorConverter.toGeneratorPreviewListDTO(generators)); } +// // 전체 일정 생성기 리스트 조회 (사용자의 북마크 상태 포함) +// @GetMapping("/list/{memberId}") +// @Operation(summary = "전체 일정 생성기 리스트 조회 (사용자의 북마크 상태 포함) API", description = "전체 일정 생성기 리스트를 조회하며 사용자가 북마크한 생성기를 표시합니다.") +// public ApiResponse findGeneratorsWithBookmark(@PathVariable Long memberId) { +// List generators = generatorQueryService.getGeneratorsWithBookmarkStatus(memberId); +// return ApiResponse.onSuccess( +// SuccessStatus.GENERATOR_OK, +// GeneratorConverter.toGeneratorPreviewListDTO(generators)); +// } + } diff --git a/src/main/java/Capstone/AutoScheduler/global/web/dto/Generator/GeneratorResponseDTO.java b/src/main/java/Capstone/AutoScheduler/global/web/dto/Generator/GeneratorResponseDTO.java index bea6531..d672e4a 100644 --- a/src/main/java/Capstone/AutoScheduler/global/web/dto/Generator/GeneratorResponseDTO.java +++ b/src/main/java/Capstone/AutoScheduler/global/web/dto/Generator/GeneratorResponseDTO.java @@ -68,6 +68,7 @@ public static class GeneratorPreviewDTO { List> frames; List> mapping; String webUrl; + boolean isBookmarked; } @Builder diff --git a/src/main/java/Capstone/AutoScheduler/global/web/dto/Member/MemberResponseDTO.java b/src/main/java/Capstone/AutoScheduler/global/web/dto/Member/MemberResponseDTO.java index 1620dec..59a2d75 100644 --- a/src/main/java/Capstone/AutoScheduler/global/web/dto/Member/MemberResponseDTO.java +++ b/src/main/java/Capstone/AutoScheduler/global/web/dto/Member/MemberResponseDTO.java @@ -1,9 +1,11 @@ package Capstone.AutoScheduler.global.web.dto.Member; +import Capstone.AutoScheduler.global.domain.enums.TypeSource; import lombok.*; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; public class MemberResponseDTO { @@ -35,10 +37,16 @@ public static class SignInResultDTO { @AllArgsConstructor public static class BookmarkPreviewDTO { private Long memberId; + private String memberName; private Long bookmarkId; private Long generatorId; private String generatorTitle; private String generatorDetail; + private TypeSource sourceType; + private List> frames; + private List> mapping; + private String webUrl; + private boolean isBookmarked; private LocalDateTime createdAt; }