Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Team-16] BE 3번째 PR입니다! #184

Open
wants to merge 24 commits into
base: team-16
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
89273e3
[#8] Feat : Spring JDBC 의존성 추가
street62 Apr 5, 2022
c2caa8f
[#8] Chore : gitignore 추가
street62 Apr 5, 2022
e817c33
[#8] Feat : application.properties DB 관련 설정
street62 Apr 5, 2022
9d48a39
[#8] Chore : git 캐시 삭제
street62 Apr 5, 2022
adcd6c1
[#8] Chore : gitignore .idea 추가
street62 Apr 5, 2022
825f3bf
[#8] Chore : gitignore 수정 후 재커밋
street62 Apr 5, 2022
fb1d3a3
[#14] Feat : TaskController.add() 구현
street62 Apr 7, 2022
d3f7da8
[#18] Swagger 설정
street62 Apr 8, 2022
edd99b0
[#18] Feat: response 응답 형식 변경 및 Swagger ui 페이지 Example Value 값 변경
dongkyu-park Apr 8, 2022
e17f1bf
[#23] Feat : TaskController.add() 응답코드만 반환하도록 변경
street62 Apr 11, 2022
1ba223f
[#23] Refactor : ResponseEntity를 Service에서 생성하도록 변경
street62 Apr 11, 2022
2249d49
[#23] 패키지명 및 group ID 변경
street62 Apr 11, 2022
6fd4420
[#24] build.gradle의 sourceCompatibility 설정
street62 Apr 12, 2022
63fe397
[#24] Swagger Controller 경로 변경
street62 Apr 12, 2022
96c65c4
[#24] TaskController 200 응답 시 리스폰스 객체 타입 삭제
street62 Apr 12, 2022
e5fb1d6
[#24] Fix : DB 구조 변경으로 인한 로직 수정
street62 Apr 12, 2022
2dd6d86
[#24] Fix : Task 생성자 println 삭제
street62 Apr 12, 2022
3b895d4
[#28] Feat : 전체 Task 데이터 불러오기 구현
street62 Apr 12, 2022
e8aedc3
[#28] Task DB 저장 시 기준 timezone 설정
street62 Apr 13, 2022
55f3284
[#28] Feat : 전체 태스크 조회 API Swagger 설정
street62 Apr 13, 2022
a63360b
[#30] 태스크 추가 API response body에 Task 객체 추가
street62 Apr 13, 2022
14168bc
[#31] Feat : 태스크 상태 수정 API 구현
street62 Apr 13, 2022
99be57d
[#31] 태스크 상태 수정 API Swagger 설정
street62 Apr 13, 2022
43121bf
[#31] Fix : TaskStatusChangeDto 클래스 작성
street62 Apr 13, 2022
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
Prev Previous commit
Next Next commit
[#31] Feat : 태스크 상태 수정 API 구현
/task/status 경로에 patch 요청 시 해당 idx를 가진 Task의 status를 변경하도록 구현.
Service 단에서 매개변수의 범위가 올바르지 않을 때는 BAD REQUEST를 리턴하도록 하는 검증 로직(isChangeInfoInvalid) 추가.
street62 committed Apr 13, 2022
commit 14168bc26c3c9f57de16eec79cac32ec4006ace1
Original file line number Diff line number Diff line change
@@ -41,4 +41,9 @@ public ResponseEntity<Task> add(@RequestBody Task task) {
public ResponseEntity<Map<Integer, List<Task>>> load() {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Map<Integer... 형태로 리스폰스가 넘어가야 하는것이 이해가지 않는 부분이 있긴 합니다.
이런 상황을 위한 DTO가 설계되어야 하지 않나 생각이 듭니다.

return taskService.getAllTasks();
}

@PatchMapping("/task/status")
public ResponseEntity<Task> move(@RequestParam long idx, int status) {
return taskService.changeTaskStatus(idx, status);
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package kr.codesquad.todo.repository;

import kr.codesquad.todo.domain.Task;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.stereotype.Repository;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.HashMap;
@@ -19,7 +17,7 @@
public class JdbcTaskRepository implements TaskRepository {
private final JdbcTemplate jdbcTemplate;

public JdbcTaskRepository(DataSource dataSource) throws SQLException {
public JdbcTaskRepository(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}

@@ -47,13 +45,26 @@ public Task add(Task task) {
@Override
public List<Task> getAll() {
String sql = "select * from task order by created_at desc";
List<Task> tasks = jdbcTemplate.query(sql, (rs, rowCount) -> {
return jdbcTemplate.query(sql, (rs, rowCount) -> {
Task task = new Task(rs.getString("title"), rs.getString("content"), rs.getString("author"), rs.getInt("status"));

task.setCreateAt(rs.getTimestamp("created_at").toLocalDateTime());
task.setIdx(rs.getInt("idx"));
return task;
});
return tasks;
}

@Override
public Task changeStatus(long idx, int status) {
String updateSql = "update task set status = ? where idx = ?";
jdbcTemplate.update(updateSql, status, idx);

String selectSql = "select * from task where idx = ?";
return jdbcTemplate.queryForObject(selectSql, (rs, rowNum) -> {
Task newTask = new Task(rs.getString("title"), rs.getString("content"), rs.getString("author"), rs.getInt("status"));
newTask.setIdx(rs.getLong("idx"));
newTask.setCreateAt(rs.getTimestamp("created_at").toLocalDateTime());
return newTask;
}, idx);
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package kr.codesquad.todo.repository;

import kr.codesquad.todo.domain.Task;
import org.springframework.http.ResponseEntity;

import java.util.List;

public interface TaskRepository {
public Task add(Task task);
Task add(Task task);

List<Task> getAll();

Task changeStatus(long idx, int status);
}
Original file line number Diff line number Diff line change
@@ -67,4 +67,22 @@ public ResponseEntity<Map<Integer, List<Task>>> getAllTasks() {

return ResponseEntity.status(HttpStatus.OK).body(taskMap);
}

public ResponseEntity<Task> changeTaskStatus(long idx, int status) {
if (isChangeInfoInvalid(idx, status)) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
Task task;
try {
task = taskRepository.changeStatus(idx, status);
} catch (Exception e) {
e.printStackTrace();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.printStackTrace() 는 많은 경우에 무의미합니다. 그리고 taskRepository.changeStatus() 가 던지는 예외가 정말 Exception 타입인지요? 그렇다면 그것도 문제입니다.

상황에 맞는 커스텀 예외를 적극 설계해 주시기 바랍니다.

return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
return ResponseEntity.status(HttpStatus.OK).body(task);
}

public boolean isChangeInfoInvalid(long idx, int status) {
return !(status == 1 || status == 2 || status == 3) || idx < 1;
}
Comment on lines +85 to +87

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

status 를 어떤 타입으로 변경한 뒤 이부분도 반드시 리팩터링 되어야 할 겁니다.

}