diff --git a/src/main/java/com/cake/pop/domain/letter/controller/LetterController.java b/src/main/java/com/cake/pop/domain/letter/controller/LetterController.java index dbb4e90..8b11d83 100644 --- a/src/main/java/com/cake/pop/domain/letter/controller/LetterController.java +++ b/src/main/java/com/cake/pop/domain/letter/controller/LetterController.java @@ -4,8 +4,10 @@ import com.cake.pop.domain.letter.dto.request.CreateStorageRequest; import com.cake.pop.domain.letter.dto.response.GetLetterResponse; import com.cake.pop.domain.letter.dto.response.GetLettersResponse; +import com.cake.pop.domain.letter.dto.response.SimpleLetterDto; import com.cake.pop.domain.letter.service.LetterService; import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -42,11 +44,17 @@ public ResponseEntity getLetter(@PathVariable("letterId") Lon } @PostMapping("/storage") - public ResponseEntity createStorage(@RequestBody @Valid CreateStorageRequest request){ + public ResponseEntity createStorage(@RequestBody @Valid CreateStorageRequest request) { Long userId = 1L; letterService.createStorage(userId, request); return ResponseEntity.ok().build(); } + @GetMapping("/storages") + public ResponseEntity> getStorages() { + Long userId = 1L; + List response = letterService.getStorages(userId); + return ResponseEntity.ok(response); + } } diff --git a/src/main/java/com/cake/pop/domain/letter/repository/StorageRepository.java b/src/main/java/com/cake/pop/domain/letter/repository/StorageRepository.java index 00a4ad7..864659b 100644 --- a/src/main/java/com/cake/pop/domain/letter/repository/StorageRepository.java +++ b/src/main/java/com/cake/pop/domain/letter/repository/StorageRepository.java @@ -1,9 +1,15 @@ package com.cake.pop.domain.letter.repository; import com.cake.pop.entity.Storage; +import com.cake.pop.entity.User; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; @Repository public interface StorageRepository extends JpaRepository { + + @Query("SELECT s FROM Storage s JOIN FETCH s.letter WHERE s.user = :user") + List findByUser(User user); } diff --git a/src/main/java/com/cake/pop/domain/letter/service/LetterService.java b/src/main/java/com/cake/pop/domain/letter/service/LetterService.java index 8b0d9ad..f50e648 100644 --- a/src/main/java/com/cake/pop/domain/letter/service/LetterService.java +++ b/src/main/java/com/cake/pop/domain/letter/service/LetterService.java @@ -70,4 +70,20 @@ public void createStorage(Long userId, CreateStorageRequest request){ storageRepository.save(storage); } + + public List getStorages(Long userId){ + User findUser = userRepository.getById(userId); + List storages = storageRepository.findByUser(findUser); + + return storages.stream() + .map(storage -> { + Letter letter = storage.getLetter(); + return new SimpleLetterDto( + letter.getId(), + letter.getContent(), + letter.getCreatedAt().toLocalDate() // LocalDateTime → LocalDate + ); + }) + .toList(); + } }