Skip to content

Commit 06017fb

Browse files
authored
Merge pull request #96 from Capstone-OpenStep/feature/#94-task-update
feat: 테스크 전체 업데이트
2 parents c61f24b + 3dc2a7e commit 06017fb

File tree

4 files changed

+39
-0
lines changed

4 files changed

+39
-0
lines changed

src/main/java/com/chungang/capstone/openstep/domain/Task/controller/TaskController.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,16 @@ public ApiResponse<List<TaskResponseDTO.RepoTaskGroupDTO>> getTaskList() {
6262
Member member = SecurityUtils.getCurrentMember();
6363
return ApiResponse.onSuccess(SuccessStatus.TASK_GET_OK, taskQueryService.getRepoTaskGroup(member));
6464
}
65+
66+
//모든 테스크의 상태를 업데이트하고 상태가 변한 테스크를 반환하는 API
67+
@GetMapping("/update-status")
68+
public ApiResponse<List<TaskResponseDTO.TaskBrief>> updateTaskStatus() {
69+
Member member = SecurityUtils.getCurrentMember();
70+
List<Task> updatedTasks = taskQueryService.updateAllTaskStatus(member);
71+
if(updatedTasks.isEmpty()) {
72+
return ApiResponse.onSuccess(SuccessStatus.TASK_STATUS_UPDATE_OK, List.of());
73+
}
74+
return ApiResponse.onSuccess(SuccessStatus.TASK_STATUS_UPDATE_OK, TaskConverter.taskToTaskBriefs(updatedTasks));
75+
}
76+
6577
}

src/main/java/com/chungang/capstone/openstep/domain/Task/converter/TaskConverter.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.chungang.capstone.openstep.domain.Task.converter;
22

3+
import java.util.List;
4+
35
import com.chungang.capstone.openstep.domain.Task.dto.TaskResponseDTO;
46
import com.chungang.capstone.openstep.domain.Task.entity.Task;
57

@@ -41,4 +43,10 @@ public static TaskResponseDTO.TaskBrief toTaskBrief(Task task) {
4143
.updatedAt(task.getUpdatedAt().toString())
4244
.build();
4345
}
46+
47+
public static List<TaskResponseDTO.TaskBrief> taskToTaskBriefs(List<Task> updatedTasks) {
48+
return updatedTasks.stream()
49+
.map(TaskConverter::toTaskBrief)
50+
.toList();
51+
}
4452
}

src/main/java/com/chungang/capstone/openstep/domain/Task/service/TaskQueryService.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.LinkedHashMap;
44
import java.util.List;
55
import java.util.Map;
6+
import java.util.Optional;
67
import java.util.stream.Collectors;
78

89
import org.springframework.stereotype.Service;
@@ -119,4 +120,21 @@ public List<TaskResponseDTO.RepoTaskGroupDTO> getRepoTaskGroup(Member member) {
119120
})
120121
.collect(Collectors.toList());
121122
}
123+
124+
public List<Task> updateAllTaskStatus(Member member) {
125+
List<Task> tasks = taskRepository.findAllByMember(member);
126+
List<Task> updatedTasks = tasks.stream()
127+
.map(task -> {
128+
TaskStatus resolvedStatus = githubStatusResolver.resolveStatus(task, member);
129+
if (task.getStatus() != resolvedStatus) {
130+
task.updateStatus(resolvedStatus);
131+
return Optional.of(taskRepository.save(task));
132+
}
133+
return Optional.<Task>empty();
134+
})
135+
.flatMap(Optional::stream) // Optional 중 값 있는 것만 추출
136+
.collect(Collectors.toList());
137+
138+
return updatedTasks;
139+
}
122140
}

src/main/java/com/chungang/capstone/openstep/global/apiPayload/code/status/SuccessStatus.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public enum SuccessStatus implements BaseCode {
5050
TASK_GET_OK(HttpStatus.OK,"TASK_4002","테스크 상세조회가 완료되었습니다." ),
5151
TASK_BRANCH_GET_OK(HttpStatus.OK,"TASK_4003" ,"테스크 브랜치 조회가 완료되었습니다." ),
5252
TASK_STATUS_GET_OK(HttpStatus.OK,"TASK_4004" ,"테스크 상태 조회가 완료되었습니다." ),
53+
TASK_STATUS_UPDATE_OK(HttpStatus.OK,"TASK_4005","사용자의 전체 테스크 상태 업데이트가 완료되었습니다." ),
5354
TASK_DELETE_OK(HttpStatus.OK,"TASK_4101","테스크 삭제가 완료되었습니다." ),
5455

5556
// Rank 관련 응답

0 commit comments

Comments
 (0)