Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,11 @@ public ResponseEntity<Void> deleteCard(@PathVariable UUID cardId) {
}

@GetMapping("/by-date")
public ResponseEntity<List<CardListResponse>> getCardsByCreatedAt(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate createdAt) {
List<CardListResponse> cards = cardService.getCardsByCreatedAt(createdAt);
return ResponseEntity.ok(cards);

public ResponseEntity<List<CardListResponse>> getCardsByCreatedAt(
@RequestHeader("x-auth-sub") UUID userId,
@RequestParam("createdAt") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate createdAt
) {
List<CardListResponse> response = cardService.getCardsByDate(userId, createdAt);
return ResponseEntity.ok(response);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public interface CardRepository extends JpaRepository<Card, byte[]> {
void deleteByCardId(byte[] cardId);
@Query("SELECT DISTINCT c FROM Card c " + "JOIN c.cardlinks cl " + "WHERE cl.chatId = :threadId")
Page<Card> findByCardlinkedThreadId(@Param("threadId") byte[] threadId, Pageable pageable);
@Query("SELECT c FROM Card c WHERE DATE(c.createdAt) = :createdDate")
List<Card> findAllByCreatedDate(@Param("createdDate") LocalDate createdDate);
@Query("SELECT c FROM Card c WHERE DATE(c.createdAt) = :createdAt AND c.spaceId IN :spaceIds")
List<Card> findAllByCreatedAtAndSpaceIds(@Param("createdAt") LocalDate createdAt, @Param("spaceIds") List<byte[]> spaceIds);
// @Query("SELECT c FROM Card c WHERE DATE(c.createdAt) = CURRENT_DATE")
// List<Card> findTodayCreatedCards();
@Query("SELECT c FROM Card c WHERE c.createdAt >= :start AND c.createdAt < :end")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -197,24 +200,58 @@ public void deleteCard(UUID cardId) {
}

//오늘 생성된 지식카드 목록 조회
// @Transactional
// public List<CardListResponse> getCardsByDate(UUID userId, LocalDate createdAt) {
// List<Card> 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<CardListResponse> getCardsByCreatedAt(LocalDate date) {
List<Card> cards = cardRepository.findAllByCreatedDate(date);
public List<CardListResponse> getCardsByDate(UUID userId, LocalDate createdAt) {
List<Space> userSpaces = spaceRepository.findByUserId(uuidHelper.convertUUIDToByteArray(userId));

if (userSpaces.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "No accessible spaces found.");
}

List<byte[]> spaceIds = userSpaces.stream()
.map(Space::getSpaceId)
.toList();

List<Card> 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@
public interface SpaceRepository extends JpaRepository<Space, byte[]> {
List<Space> findAllByUserId(byte[] userId, Sort sort);
Optional<Space> findBySpaceIdAndUserId(byte[] spaceId, byte[] userId);
List<Space> findByUserId(byte[] userId);
}
Loading