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 1ff8228..9f86178 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 @@ -1,13 +1,16 @@ package com.cake.pop.domain.letter.controller; import com.cake.pop.domain.letter.dto.request.CreateLetterRequest; +import com.cake.pop.domain.letter.dto.response.GetLettersResponse; import com.cake.pop.domain.letter.service.LetterService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @@ -18,9 +21,14 @@ public class LetterController { private final LetterService letterService; @PostMapping - public ResponseEntity createLetter(@RequestBody @Valid CreateLetterRequest request){ + public ResponseEntity createLetter(@RequestBody @Valid CreateLetterRequest request) { letterService.create(request); - return ResponseEntity.ok().build(); } + + @GetMapping + public ResponseEntity getLetters(@RequestParam("region") String region) { + GetLettersResponse response = letterService.getLetters(region); + return ResponseEntity.ok(response); + } } diff --git a/src/main/java/com/cake/pop/domain/letter/dto/response/GetLettersResponse.java b/src/main/java/com/cake/pop/domain/letter/dto/response/GetLettersResponse.java index a648e72..8360077 100644 --- a/src/main/java/com/cake/pop/domain/letter/dto/response/GetLettersResponse.java +++ b/src/main/java/com/cake/pop/domain/letter/dto/response/GetLettersResponse.java @@ -1,4 +1,9 @@ package com.cake.pop.domain.letter.dto.response; -public record GetLettersResponse() { +import java.util.List; + +public record GetLettersResponse( + String region, + List letters +) { } diff --git a/src/main/java/com/cake/pop/domain/letter/dto/response/SimpleLetterDto.java b/src/main/java/com/cake/pop/domain/letter/dto/response/SimpleLetterDto.java new file mode 100644 index 0000000..7d6cbf8 --- /dev/null +++ b/src/main/java/com/cake/pop/domain/letter/dto/response/SimpleLetterDto.java @@ -0,0 +1,12 @@ +package com.cake.pop.domain.letter.dto.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.time.LocalDate; + +public record SimpleLetterDto( + Long letterId, + String content, + @JsonFormat(pattern = "yy.MM.dd") + LocalDate createdAt +) { +} diff --git a/src/main/java/com/cake/pop/domain/letter/repository/LetterRepository.java b/src/main/java/com/cake/pop/domain/letter/repository/LetterRepository.java index 6e78702..df42be6 100644 --- a/src/main/java/com/cake/pop/domain/letter/repository/LetterRepository.java +++ b/src/main/java/com/cake/pop/domain/letter/repository/LetterRepository.java @@ -2,13 +2,17 @@ import com.cake.pop.domain.letter.exception.LetterErrorCode; import com.cake.pop.entity.Letter; +import com.cake.pop.entity.Mailbox; import com.cake.pop.global.exception.RestApiException; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface LetterRepository extends JpaRepository { + List findByMailbox(Mailbox mailbox); + default Letter getById(Long id) { return findById(id).orElseThrow(() -> new RestApiException(LetterErrorCode.LETTER_NOT_FOUND)); } 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 86551c9..2be0bd7 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 @@ -1,10 +1,14 @@ package com.cake.pop.domain.letter.service; import com.cake.pop.domain.letter.dto.request.CreateLetterRequest; +import com.cake.pop.domain.letter.dto.response.GetLettersResponse; +import com.cake.pop.domain.letter.dto.response.SimpleLetterDto; import com.cake.pop.domain.letter.repository.LetterRepository; import com.cake.pop.domain.letter.repository.MailboxRepository; import com.cake.pop.entity.Letter; import com.cake.pop.entity.Mailbox; +import com.cake.pop.entity.enums.Region; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -20,4 +24,20 @@ public void create(CreateLetterRequest request) { Letter letter = Letter.of(request.content(), findMailbox, request.imageUrl()); letterRepository.save(letter); } + + public GetLettersResponse getLetters(String region){ + Mailbox findMailbox = mailboxRepository.getFirstByRegion(Region.fromKoreanName(region)); + + List letters = letterRepository.findByMailbox(findMailbox); + + List letterDtos = letters.stream() + .map(letter -> new SimpleLetterDto( + letter.getId(), + letter.getContent(), + letter.getCreatedAt().toLocalDate() + )) + .toList(); + + return new GetLettersResponse(region, letterDtos); + } }