diff --git a/src/main/java/org/sopt/diary/api/DiaryController.java b/src/main/java/org/sopt/diary/api/DiaryController.java index a83f19f..573fefe 100644 --- a/src/main/java/org/sopt/diary/api/DiaryController.java +++ b/src/main/java/org/sopt/diary/api/DiaryController.java @@ -4,10 +4,7 @@ import org.sopt.diary.service.DiaryService; import org.springframework.http.HttpStatus; 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.RestController; +import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @@ -51,11 +48,21 @@ ResponseEntity getDiaryList(){ // (2) Client 와 협약한 interface 로 변환 List diaryResponseList = new ArrayList<>(); for (Diary diary : diaries) { - diaryResponseList.add(new DiaryResponse(diary.getId(), diary.getName())); + diaryResponseList.add(new DiaryResponse(diary.getId(), diary.getTitle())); } return ResponseEntity.ok(new DiaryListResponse(diaryResponseList)); } + @GetMapping("/luckybicky/diaries/{diaryId}") + ResponseEntity getDiary(@PathVariable long diaryId) { + Diary diary = diaryService.getDiaryDetailById(diaryId); + if(diary == null) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); + } + + return ResponseEntity.ok(new DiaryResponse(diary.getId(), diary.getTitle(), diary.getContent(), diary.getCreatedAt())); + } + } diff --git a/src/main/java/org/sopt/diary/api/DiaryResponse.java b/src/main/java/org/sopt/diary/api/DiaryResponse.java index 1488541..9dd161b 100644 --- a/src/main/java/org/sopt/diary/api/DiaryResponse.java +++ b/src/main/java/org/sopt/diary/api/DiaryResponse.java @@ -2,27 +2,50 @@ import com.fasterxml.jackson.annotation.JsonInclude; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + @JsonInclude(JsonInclude.Include.NON_NULL) // null인 필드는 포함하지 않음 public class DiaryResponse { private final long id; - private String name; + private String title; + private String content; + private String createdAt; // id만 반환하는 생성자 public DiaryResponse(long id) { this.id = id; } - // id와 name을 모두 반환하는 생성자 - public DiaryResponse(long id, String name) { + // id와 title 을 모두 반환하는 생성자 + public DiaryResponse(long id, String title) { this.id = id; - this.name = name; + this.title = title; + } + + // id, title, content, createdAt 을 모두 반환하는 생성자 + public DiaryResponse(long id, String title, String content, LocalDateTime createdAt) { + this.id = id; + this.title = title; + this.content = content; + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + this.createdAt = createdAt.format(formatter); } public long getId() { return id; } - public String getName() { - return name; + public String getTitle() { + return title; + } + + public String getContent() { + return content; + } + + public String getCreatedAt() { + return createdAt; } } diff --git a/src/main/java/org/sopt/diary/repository/DiaryEntity.java b/src/main/java/org/sopt/diary/repository/DiaryEntity.java index 62cfca4..42b18e4 100644 --- a/src/main/java/org/sopt/diary/repository/DiaryEntity.java +++ b/src/main/java/org/sopt/diary/repository/DiaryEntity.java @@ -30,12 +30,8 @@ public class DiaryEntity { @Column public LocalDateTime updatedAt; - - // 생성자 - public DiaryEntity() { - - } + public DiaryEntity() { } public DiaryEntity(final String title) { this.title = title; @@ -44,17 +40,14 @@ public DiaryEntity(final String title) { public DiaryEntity(String title, String content) { this.title = title; this.content = content; + this.createdAt = LocalDateTime.now(); + this.updatedAt = LocalDateTime.now(); } - public Long getId() { - return id; - } - - public String getTitle() { - return title; - } - - public String getContent() { - return content; - } + // Getters + public Long getId() { return id; } + public String getTitle() { return title; } + public String getContent() { return content; } + public LocalDateTime getCreatedAt() { return createdAt; } + public LocalDateTime getUpdatedAt() { return updatedAt; } } diff --git a/src/main/java/org/sopt/diary/service/Diary.java b/src/main/java/org/sopt/diary/service/Diary.java index 8a39151..47af321 100644 --- a/src/main/java/org/sopt/diary/service/Diary.java +++ b/src/main/java/org/sopt/diary/service/Diary.java @@ -1,22 +1,41 @@ package org.sopt.diary.service; +import java.time.LocalDateTime; + /* Diary 관련 비즈니스 로직을 정의한 서비스 클래스 */ public class Diary { private final long id; - private final String name; + private final String title; + private String content; + private LocalDateTime createdAt; + + public Diary(long id, String title) { + this.id = id; + this.title = title; + } - public Diary(long id, String name) { + public Diary(long id, String title, String content, LocalDateTime createdAt) { this.id = id; - this.name = name; + this.title = title; + this.content = content; + this.createdAt = createdAt; } public long getId() { return id; } - public String getName() { - return name; + public String getTitle() { + return title; + } + + public String getContent() { + return content; + } + + public LocalDateTime getCreatedAt() { + return createdAt; } } diff --git a/src/main/java/org/sopt/diary/service/DiaryService.java b/src/main/java/org/sopt/diary/service/DiaryService.java index 8633394..bb4d89b 100644 --- a/src/main/java/org/sopt/diary/service/DiaryService.java +++ b/src/main/java/org/sopt/diary/service/DiaryService.java @@ -51,4 +51,10 @@ public List getDiaries() { return diaries; } + public Diary getDiaryDetailById(Long id) { + DiaryEntity diaryEntity = diaryRepository.findById(id).orElse(null); + return diaryEntity != null + ? new Diary(diaryEntity.getId(), diaryEntity.getTitle(), diaryEntity.getContent(), diaryEntity.getCreatedAt()) + : null; + } }