Skip to content

Commit

Permalink
Merge pull request #35 from LearnMate-Dev/feature/34-divide-todo-guid…
Browse files Browse the repository at this point in the history
…e-saving-logic

[✨ FEATURE] Divide Todo Guide Saving Logic
  • Loading branch information
L-U-Ready authored Dec 6, 2024
2 parents 940e95c + 3ea92cd commit 32b12e3
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 19 deletions.
10 changes: 8 additions & 2 deletions src/main/java/LearnMate/dev/controller/PlanController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import LearnMate.dev.common.ApiResponse;
import LearnMate.dev.model.dto.request.PlanPostRequest;
import LearnMate.dev.model.dto.request.PlanPatchRequest;
import LearnMate.dev.model.dto.request.PlanSaveRequest;
import LearnMate.dev.model.dto.response.PlanDetailResponse;
import LearnMate.dev.service.PlanService;
import jakarta.validation.Valid;
Expand All @@ -21,9 +22,14 @@ public ApiResponse<String> getTodos() {
return ApiResponse.onSuccess(planService.getTodos());
}

@PostMapping()
@PostMapping("/guide")
public ApiResponse<String> createTodo(@RequestBody @Valid PlanPostRequest request) {
return ApiResponse.onSuccessData("Todo Guide 생성", planService.postTodo(request));
return ApiResponse.onSuccess(planService.postTodo(request));
}

@PostMapping("/guide/save")
public ApiResponse<String> saveTodoGuide(@RequestBody @Valid PlanSaveRequest request) {
return ApiResponse.onSuccess(planService.saveTodo(request));
}

@GetMapping("/{todoId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import LearnMate.dev.model.entity.User;

public class PlanConverter {

public static Plan toPlan(String content, User user, String guide) {
return Plan.builder()
.content(content)
Expand All @@ -21,5 +20,4 @@ public static PlanDetailResponse toPlanDetailResponse(String content, String gui
.guide(guide)
.build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,11 @@
@Getter
@NoArgsConstructor
public class PlanPostRequest {

@NotBlank(message = "계획 내용은 필수입니다.")
private String content;

@Builder
public PlanPostRequest(String content) {
this.content = content;
}

}
24 changes: 24 additions & 0 deletions src/main/java/LearnMate/dev/model/dto/request/PlanSaveRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package LearnMate.dev.model.dto.request;

import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
public class PlanSaveRequest {

@NotNull(message = "계획 내용은 필수입니다.")
private String content;

@NotNull(message = "Todo Guide는 필수입니다.")
private String guide;

@Builder
public PlanSaveRequest(String content,
String guide) {
this.content = content;
this.guide = guide;
}
}
23 changes: 10 additions & 13 deletions src/main/java/LearnMate/dev/service/PlanService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import LearnMate.dev.model.converter.PlanConverter;
import LearnMate.dev.model.dto.request.PlanPostRequest;
import LearnMate.dev.model.dto.request.PlanPatchRequest;
import LearnMate.dev.model.dto.request.PlanSaveRequest;
import LearnMate.dev.model.dto.response.PlanDetailResponse;
import LearnMate.dev.model.entity.Plan;
import LearnMate.dev.model.entity.User;
Expand All @@ -29,47 +30,46 @@ public class PlanService {

// 최신 가이드 조회
public String getTodos() {

Long userId = getUserIdFromAuthentication();

Plan plan = findRecentPlanByUserId(userId);

return plan.getGuide();

}

// Todo 생성
@Transactional
public String postTodo(PlanPostRequest request) {
validContentLength(request.getContent());

return getTodoGuide(request.getContent());
}

// Todo Guide 저장
@Transactional
public String saveTodo(PlanSaveRequest request) {
validContentLength(request.getContent());

Long userId = getUserIdFromAuthentication();

User user = findUserById(userId);

String guide = getTodoGuide(request.getContent());

planRepository.save(PlanConverter.toPlan(request.getContent(), user, guide));
planRepository.save(PlanConverter.toPlan(request.getContent(), user, request.getGuide()));

return guide;
return "가이드 저장 완료";
}

// Todo 상세 조회
public PlanDetailResponse getTodoDetail(Long todoId) {

Long userId = getUserIdFromAuthentication();

Plan plan = findRecentPlanByUserId(userId);

return PlanConverter.toPlanDetailResponse(plan.getContent(), plan.getGuide());

}

// Todo 수정
@Transactional
public String patchTodo(Long todoId, PlanPatchRequest request) {

validContentLength(request.getContent());

Long userId = getUserIdFromAuthentication();
Expand All @@ -90,7 +90,6 @@ public String patchTodo(Long todoId, PlanPatchRequest request) {
// Todo 삭제
@Transactional
public String deleteTodo(Long todoId) {

Long userId = getUserIdFromAuthentication();

Plan plan = findPlanByTodoId(todoId);
Expand All @@ -102,7 +101,6 @@ public String deleteTodo(Long todoId) {
planRepository.delete(plan);

return "Todo 삭제";

}

private Long getUserIdFromAuthentication() {
Expand Down Expand Up @@ -136,5 +134,4 @@ private void validIsUserAuthorizedForPlan(User user, Plan plan) {
private String getTodoGuide(String content) {
return openAIService.getTodoGuide(content);
}

}

0 comments on commit 32b12e3

Please sign in to comment.