Skip to content

Commit

Permalink
[feat] #4 일기 상세 조회 기능
Browse files Browse the repository at this point in the history
  • Loading branch information
2hyunjinn committed Oct 21, 2024
1 parent 88a7530 commit 5c9b3b7
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 32 deletions.
17 changes: 12 additions & 5 deletions src/main/java/org/sopt/diary/api/DiaryController.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -51,11 +48,21 @@ ResponseEntity<DiaryListResponse> getDiaryList(){
// (2) Client 와 협약한 interface 로 변환
List<DiaryResponse> 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<DiaryResponse> 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()));
}


}
35 changes: 29 additions & 6 deletions src/main/java/org/sopt/diary/api/DiaryResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
25 changes: 9 additions & 16 deletions src/main/java/org/sopt/diary/repository/DiaryEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,8 @@ public class DiaryEntity {
@Column
public LocalDateTime updatedAt;



// 생성자
public DiaryEntity() {

}
public DiaryEntity() { }

public DiaryEntity(final String title) {
this.title = title;
Expand All @@ -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; }
}
29 changes: 24 additions & 5 deletions src/main/java/org/sopt/diary/service/Diary.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
6 changes: 6 additions & 0 deletions src/main/java/org/sopt/diary/service/DiaryService.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,10 @@ public List<Diary> 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;
}
}

0 comments on commit 5c9b3b7

Please sign in to comment.