createTodo에서 했던 것처럼 새 Todo 리스트 반환을 위해 findByUserId() 메서드를 사용한다.
Repository의 findByUserId()를 이용해 TodoService에 findAll이라는 메서드 작성
public List<TodoEntity> retrieve(final String userId) {
return repository.findByUserId(userId);
}
TodoController에 새 GET 메서드를 만들어주고 메서드 내부를 서비스 코드를 이용하여 작성한다.
@GetMapping
public ResponseEntity<?> retrieveTodoList() {
String temporaryUserId = "temporary-user"; // temporary user id.
// (1) 서비스 메서드의 retrieve 메서드를 사용해 Todo 리스트를 가져온다.
List<TodoEntity> entities = service.retrieve(temporaryUserId);
// (2) 자바 스트림을 이용해 리턴된 엔티티 리스트를 TodoDTO 리스트로 변환한다.
List<TodoDTO> dtos = entities.stream().map(TodoDTO::new).collect(Collectors.toList());
// (6) 변환된 TodoDTO 리스트를 이용해 ResponseDTO를 초기화한다.
ResponseDTO<TodoDTO> response = ResponseDTO.<TodoDTO>builder().data(dtos).build();
// (7) Response를 리턴한다.
return ResponseEntity.ok().body(response);
}
주의!! H2 데이터베이스를 사용하고 있으니 이전에 생성했던 Todo 아이템은 이미 없어졌다. 그러니 HTTP POST 메서드로 새 Todo 아이템을 생성하고 GET 메서드로 리스트를 받아야 한다.