From 2f194b872b8d0fcef8d361288735590cc835e9cd Mon Sep 17 00:00:00 2001 From: dayoung030303 Date: Fri, 18 Jul 2025 13:50:26 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=A4=EB=8A=98=EC=9D=98=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EC=A7=80=EC=8B=9D=EC=B9=B4=EB=93=9C=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EC=95=84=EC=9D=B4=EB=94=94=20?= =?UTF-8?q?=EC=9D=B8=EC=A6=9D=EB=B6=80=EB=B6=84=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=95=A8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../card/controller/CardController.java | 10 ++-- .../card/repository/CardRepository.java | 4 +- .../card/service/CardService.java | 57 +++++++++++++++---- .../space/repository/SpaceRepository.java | 1 + 4 files changed, 56 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/example/gp_backend_data/card/controller/CardController.java b/src/main/java/com/example/gp_backend_data/card/controller/CardController.java index 7522e7f..43a6a7e 100644 --- a/src/main/java/com/example/gp_backend_data/card/controller/CardController.java +++ b/src/main/java/com/example/gp_backend_data/card/controller/CardController.java @@ -76,9 +76,11 @@ public ResponseEntity deleteCard(@PathVariable UUID cardId) { } @GetMapping("/by-date") - public ResponseEntity> getCardsByCreatedAt(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate createdAt) { - List cards = cardService.getCardsByCreatedAt(createdAt); - return ResponseEntity.ok(cards); - + public ResponseEntity> getCardsByCreatedAt( + @RequestHeader("x-auth-sub") UUID userId, + @RequestParam("createdAt") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate createdAt + ) { + List response = cardService.getCardsByDate(userId, createdAt); + return ResponseEntity.ok(response); } } diff --git a/src/main/java/com/example/gp_backend_data/card/repository/CardRepository.java b/src/main/java/com/example/gp_backend_data/card/repository/CardRepository.java index 8255f51..7260671 100644 --- a/src/main/java/com/example/gp_backend_data/card/repository/CardRepository.java +++ b/src/main/java/com/example/gp_backend_data/card/repository/CardRepository.java @@ -18,8 +18,8 @@ public interface CardRepository extends JpaRepository { void deleteByCardId(byte[] cardId); @Query("SELECT DISTINCT c FROM Card c " + "JOIN c.cardlinks cl " + "WHERE cl.chatId = :threadId") Page findByCardlinkedThreadId(@Param("threadId") byte[] threadId, Pageable pageable); - @Query("SELECT c FROM Card c WHERE DATE(c.createdAt) = :createdDate") - List findAllByCreatedDate(@Param("createdDate") LocalDate createdDate); + @Query("SELECT c FROM Card c WHERE DATE(c.createdAt) = :createdAt AND c.spaceId IN :spaceIds") + List findAllByCreatedAtAndSpaceIds(@Param("createdAt") LocalDate createdAt, @Param("spaceIds") List spaceIds); // @Query("SELECT c FROM Card c WHERE DATE(c.createdAt) = CURRENT_DATE") // List findTodayCreatedCards(); @Query("SELECT c FROM Card c WHERE c.createdAt >= :start AND c.createdAt < :end") diff --git a/src/main/java/com/example/gp_backend_data/card/service/CardService.java b/src/main/java/com/example/gp_backend_data/card/service/CardService.java index 1e12117..5c8072a 100644 --- a/src/main/java/com/example/gp_backend_data/card/service/CardService.java +++ b/src/main/java/com/example/gp_backend_data/card/service/CardService.java @@ -9,6 +9,8 @@ import com.example.gp_backend_data.card.domain.entity.Card; import com.example.gp_backend_data.card.repository.CardlinkRepository; import com.example.gp_backend_data.card.repository.CardRepository; +import com.example.gp_backend_data.space.domain.entity.Space; +import com.example.gp_backend_data.space.repository.SpaceRepository; import com.example.gp_backend_data.utils.UUIDHelper; import jakarta.persistence.EntityNotFoundException; import lombok.RequiredArgsConstructor; @@ -33,6 +35,7 @@ @RequiredArgsConstructor @Transactional public class CardService { + private final SpaceRepository spaceRepository; private final CardRepository cardRepository; private final CardlinkRepository cardlinkRepository; private final UUIDHelper uuidHelper; @@ -197,24 +200,58 @@ public void deleteCard(UUID cardId) { } //오늘 생성된 지식카드 목록 조회 +// @Transactional +// public List getCardsByDate(UUID userId, LocalDate createdAt) { +// List cards = cardRepository.findAllByCreatedDate(date); +// +// if (cards.isEmpty()) { +// throw new ResponseStatusException(HttpStatus.NO_CONTENT); +// } +// +// return cards.stream().map(card -> +// CardListResponse.builder() +// .cardId(uuidHelper.convertByteArrayToUUID(card.getCardId())) +// .spaceId(uuidHelper.convertByteArrayToUUID(card.getSpaceId())) +// .title(card.getTitle()) +// .createdAt(card.getCreatedAt()) +// .build() +// ).collect(Collectors.toList()); +// } + //오늘 생성된 지식카드 목록 조회 @Transactional - public List getCardsByCreatedAt(LocalDate date) { - List cards = cardRepository.findAllByCreatedDate(date); + public List getCardsByDate(UUID userId, LocalDate createdAt) { + List userSpaces = spaceRepository.findByUserId(uuidHelper.convertUUIDToByteArray(userId)); + + if (userSpaces.isEmpty()) { + throw new ResponseStatusException(HttpStatus.NOT_FOUND, "No accessible spaces found."); + } + + List spaceIds = userSpaces.stream() + .map(Space::getSpaceId) + .toList(); + + List cards = cardRepository.findAllByCreatedAtAndSpaceIds(createdAt, spaceIds); if (cards.isEmpty()) { throw new ResponseStatusException(HttpStatus.NO_CONTENT); } - return cards.stream().map(card -> - CardListResponse.builder() - .cardId(uuidHelper.convertByteArrayToUUID(card.getCardId())) - .spaceId(uuidHelper.convertByteArrayToUUID(card.getSpaceId())) - .title(card.getTitle()) - .createdAt(card.getCreatedAt()) - .build() - ).collect(Collectors.toList()); + return cards.stream() + .map(this::mapToResponse) + .toList(); } + // 💡 이 부분이 from(Card card) 역할 + private CardListResponse mapToResponse(Card card) { + return CardListResponse.builder() + .cardId(uuidHelper.convertByteArrayToUUID(card.getCardId())) + .spaceId(uuidHelper.convertByteArrayToUUID(card.getSpaceId())) + .title(card.getTitle()) + .createdAt(card.getCreatedAt()) + .build(); + } + + //특정 스레드에 하이라이트된 하이링크 목록 조회 @Transactional diff --git a/src/main/java/com/example/gp_backend_data/space/repository/SpaceRepository.java b/src/main/java/com/example/gp_backend_data/space/repository/SpaceRepository.java index 50ccb76..96e7628 100644 --- a/src/main/java/com/example/gp_backend_data/space/repository/SpaceRepository.java +++ b/src/main/java/com/example/gp_backend_data/space/repository/SpaceRepository.java @@ -12,4 +12,5 @@ public interface SpaceRepository extends JpaRepository { List findAllByUserId(byte[] userId, Sort sort); Optional findBySpaceIdAndUserId(byte[] spaceId, byte[] userId); + List findByUserId(byte[] userId); }