diff --git a/src/main/java/com/backend/diary/controller/DiaryController.java b/src/main/java/com/backend/diary/controller/DiaryController.java index e14b17b..a1d0bee 100644 --- a/src/main/java/com/backend/diary/controller/DiaryController.java +++ b/src/main/java/com/backend/diary/controller/DiaryController.java @@ -1,17 +1,65 @@ package com.backend.diary.controller; +import java.util.List; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import com.backend.diary.model.DiaryDto; import com.backend.diary.service.DiaryService; + import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.RestController; @RestController("/api/mood-meter") @RequiredArgsConstructor public class DiaryController { - private final DiaryService moodMeterService; + private final DiaryService diaryService; + /* - CRUD - Read : List 값 가져오기 + * CRUD + * Read : List 값 가져오기 */ + // TODO UserId 를 받아 해당 권한의 사람에게 매핑되게 저장 + @PostMapping("/diaries") + public ResponseEntity postDiary(@RequestBody DiaryDto diaryDto) { + String result = diaryService.setDiary(diaryDto); + if (!result.equals("success")) + return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(result, HttpStatus.OK); + } + + // TODO getList + @Getmapping("/diaries") + public ResponseEntity getDiary(@RequestParam long UserId) { + + List result = diaryService.getDiaryList(bookId, diaryDto); + if (result.isEmpty()) + return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(result, HttpStatus.OK); + } + + // TODO UserId 를 받아 적절한 권한을 가진 사람이 수정하는지 확인 + @PutMapping("/diaries/{bookId}") + public ResponseEntity putDiary(@PathVariable long bookId, @RequestBody DiaryDto diaryDto) { + + String result = diaryService.updateDiary(bookId, diaryDto); + if (!result.equals("success")) + return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(result, HttpStatus.OK); + } + + // TODO UserId 를 받아 적절한 권한을 가진 사람이 수정하는지 확인 + @DeleteMapping("/diaries/{bookId}") + public ResponseEntity deleteDiary(@PathVariable long bookId, @RequestParam long UserId) { + + String result = diaryService.deletedeleteDiary(bookId, UserId); + if (!result.equals("success")) + return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(result, HttpStatus.OK); + } } diff --git a/src/main/java/com/backend/diary/model/DiaryDto.java b/src/main/java/com/backend/diary/model/DiaryDto.java index 9f76f89..0ea46f3 100644 --- a/src/main/java/com/backend/diary/model/DiaryDto.java +++ b/src/main/java/com/backend/diary/model/DiaryDto.java @@ -1,5 +1,14 @@ package com.backend.diary.model; -public class DiaryDto { +import com.backend.moodmeter.config.MoodMeterColor; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +@Getter +@Builder +public class DiaryDto { + private String title; + private String description; + private MoodMeterColor mood; } diff --git a/src/main/java/com/backend/diary/model/DiaryEntity.java b/src/main/java/com/backend/diary/model/DiaryEntity.java index d2023f4..8dd07c2 100644 --- a/src/main/java/com/backend/diary/model/DiaryEntity.java +++ b/src/main/java/com/backend/diary/model/DiaryEntity.java @@ -2,14 +2,11 @@ import com.backend.global.domain.BaseEntity; -import com.backend.moodmeter.model.MoodMeterEntity; +import com.backend.moodmeter.config.MoodMeterColor; import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.OneToOne; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -32,9 +29,8 @@ public class DiaryEntity extends BaseEntity { @NonNull private String title; private String description; - @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "mood_meter_id") // 외래 키 컬럼의 이름 - private MoodMeterEntity moodMeterEntity; // MoodMeterEntity를 참조하는 필드 + + private MoodMeterColor mood; // Mood entity 관리 x @Builder.Default private boolean deletedAt = false; } diff --git a/src/main/java/com/backend/diary/service/DiaryService.java b/src/main/java/com/backend/diary/service/DiaryService.java index ae8ba52..5789731 100644 --- a/src/main/java/com/backend/diary/service/DiaryService.java +++ b/src/main/java/com/backend/diary/service/DiaryService.java @@ -1,17 +1,20 @@ package com.backend.diary.service; -import com.backend.moodmeter.config.MoodMeterColor; -import com.backend.moodmeter.model.MoodMeterDto; import java.util.List; +import com.backend.diary.model.DiaryDto; +import com.backend.diary.model.DiaryEntity; + //Todo public interface DiaryService { - //매개변수 생각해 보기 - void setMoodMeter(MoodMeterColor moodMeterColor); + // 매개변수 생각해 보기 + String setDiary(DiaryDto diaryDto); + + String updateDiary(long bookId, DiaryDto diaryDto); - List getMoodMeterList(); + List getDiaryList(long UserId); - void deleteMoodMeter(long bookId, long UserId); + String deleteDiary(long bookId, long UserId); } diff --git a/src/main/java/com/backend/diary/service/DiaryServiceImpl.java b/src/main/java/com/backend/diary/service/DiaryServiceImpl.java index 2434b09..729c5a2 100644 --- a/src/main/java/com/backend/diary/service/DiaryServiceImpl.java +++ b/src/main/java/com/backend/diary/service/DiaryServiceImpl.java @@ -1,14 +1,15 @@ package com.backend.diary.service; +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Service; + +import com.backend.diary.model.DiaryDto; import com.backend.diary.model.DiaryEntity; import com.backend.diary.model.DiaryRepository; -import com.backend.moodmeter.config.MoodMeterColor; -import com.backend.moodmeter.model.MoodMeterDto; -import com.backend.moodmeter.model.MoodMeterEntity; -import com.backend.moodmeter.model.MoodMeterRepository; -import java.util.List; + import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; //Todo @Service @@ -16,27 +17,68 @@ public class DiaryServiceImpl implements DiaryService { private final DiaryRepository diaryRepository; - //CRUD - //Create + // CRUD + // Create - //Todo UserID, DiaryID와 같이 저장 되어야 함 + // Todo UserID, DiaryID와 같이 저장 되어야 함 @Override - public void setMoodMeter(MoodMeterColor moodMeterColor) { - MoodMeterEntity mood = MoodMeterEntity.builder().mood(moodMeterColor).build(); - diaryRepository.save(DiaryEntity.builder().moodMeterEntity(mood).build()); + public String setDiary(DiaryDto diaryDto) { + DiaryEntity diary = DiaryEntity.builder() + .title(diaryDto.getTitle()) + .description(diaryDto.getDescription()) + .mood(diaryDto.getMood()).build(); + diaryRepository.save(diary); + return "success"; } - //Read - //UserId에 맞춰서 해당 월의 무드미터 정보를 가지고 와야 함. @Override - public List getMoodMeterList() { - return null; + public String setDiary(DiaryDto diaryDto) { + DiaryEntity diary = DiaryEntity.builder() + .title(diaryDto.getTitle()) + .description(diaryDto.getDescription()) + .mood(diaryDto.getMood()).build(); + diaryRepository.save(diary); + return "success"; } - //Delete 삭제_일기 삭제 시 함께 삭제. 복원 가능 @Override - public void deleteMoodMeter(long bookId, long UserId) { - //Todo mapping BookId, userId DeletedAt + public String updateDiary(long bookId, DiaryDto diaryDto) { + Optional optionalDiary = diaryRepository.findById(bookId); + if (optionalDiary.isEmpty()) { + return "fail"; + } else { + DiaryEntity diary = optionalDiary.get(); + if (diaryDto.getTitle() != null) { + diary.setTitle(diaryDto.getTitle()); + } + if (diaryDto.getDescription() != null) { + diary.setDescription(diaryDto.getDescription()); + } + diaryRepository.save(diary); + } + return "success"; } + // Read + // UserId에 맞춰서 해당 월의 무드미터 정보를 가지고 와야 함. + // TODO Make user + @Override + public List getDiaryList(long UserId) { + + return null; + } + + // Delete 삭제_일기 삭제 시 함께 삭제. 복원 가능 + @Override + public String deletedeleteDiary(long bookId, long UserId) { + Optional optionalDiary = diaryRepository.findById(bookId); + if (optionalDiary.isEmpty()) { + return "fail"; + } else { + DiaryEntity diary = optionalDiary.get(); + diary.setDeletedAt(true); + diaryRepository.save(diary); + } + return "success"; + } }