Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 52 additions & 4 deletions src/main/java/com/backend/diary/controller/DiaryController.java
Original file line number Diff line number Diff line change
@@ -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<DiaryDto> 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);
}
}
11 changes: 10 additions & 1 deletion src/main/java/com/backend/diary/model/DiaryDto.java
Original file line number Diff line number Diff line change
@@ -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;
}
10 changes: 3 additions & 7 deletions src/main/java/com/backend/diary/model/DiaryEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
}
15 changes: 9 additions & 6 deletions src/main/java/com/backend/diary/service/DiaryService.java
Original file line number Diff line number Diff line change
@@ -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<MoodMeterDto> getMoodMeterList();
List<DiaryDto> getDiaryList(long UserId);

void deleteMoodMeter(long bookId, long UserId);
String deleteDiary(long bookId, long UserId);

}
80 changes: 61 additions & 19 deletions src/main/java/com/backend/diary/service/DiaryServiceImpl.java
Original file line number Diff line number Diff line change
@@ -1,42 +1,84 @@
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
@RequiredArgsConstructor
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<MoodMeterDto> 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<DiaryEntity> 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<DiaryDto> getDiaryList(long UserId) {

return null;
}

// Delete 삭제_일기 삭제 시 함께 삭제. 복원 가능
@Override
public String deletedeleteDiary(long bookId, long UserId) {
Optional<DiaryEntity> optionalDiary = diaryRepository.findById(bookId);
if (optionalDiary.isEmpty()) {
return "fail";
} else {
DiaryEntity diary = optionalDiary.get();
diary.setDeletedAt(true);
diaryRepository.save(diary);
}
return "success";
}
}