반응형
[Spring JPA] 1. 체크리스트 만들기 - 초기 설정하기
Checklist Controller
@RestController
@RequestMapping("/checklist")
public class ChecklistController {
@Autowired
private ChecklistService checklistService;
@Autowired
public ChecklistController(ChecklistService checklistService) {
this.checklistService = checklistService;
}
// 새로운 체크리스트 정보 저장
@PostMapping("")
public BaseResponse<ChecklistResponse> saveChecklist(@RequestHeader("Authorization") String accessToken, @PathVariable Integer tId) {
try {
ChecklistResponse checklistResponse = checklistService.saveChecklist(accessToken, tId);
// 필요한 정보만 설정하여 반환
ChecklistResponse newChecklistResponse = new ChecklistResponse();
newChecklistResponse.setCId(checklistResponse.getCId());
newChecklistResponse.setTitle(checklistResponse.getTitle());
newChecklistResponse.setTId(checklistResponse.getTId());
// 아이템이 없는 경우 빈 리스트로 설정
if (checklistResponse.getItems() == null) {
newChecklistResponse.setItems(Collections.emptyList());
} else {
newChecklistResponse.setItems(checklistResponse.getItems());
}
return new BaseResponse<>(newChecklistResponse);
} catch (BaseException exception) {
return new BaseResponse<>(exception.getStatus());
}
}
// 특정 카테고리 정보 조회
@GetMapping("/{cId}")
public BaseResponse<ChecklistResponse> getChecklist(@PathVariable("cId") int cId) {
try {
ChecklistResponse checklistResponse = checklistService.getChecklist(cId);
return new BaseResponse<>(checklistResponse);
} catch (BaseException exception) {
return new BaseResponse<>(exception.getStatus());
}
}
// 카테고리명 수정 API
@PatchMapping("/{cId}/title") // 기존의 {cId}에 "/title"을 추가하여 제목 변경 API로 구성
public BaseResponse<ChecklistResponse> patchChecklist(
@RequestHeader("Authorization") String accessToken,
@PathVariable("cId") int cId,
@RequestBody TitleChangeRequest request) {
try {
ChecklistResponse checklistResponse = checklistService.patchChecklist(accessToken, cId, request.getNewTitle());
return new BaseResponse<>(checklistResponse);
} catch (BaseException exception) {
return new BaseResponse<>(exception.getStatus());
}
}
// 카테고리 삭제 API
@DeleteMapping("/{cId}")
public BaseResponse<String> deleteChecklist(@RequestHeader("Authorization") String accessToken, @PathVariable("cId") int cId) {
try {
int result = checklistService.deleteChecklist(accessToken, cId);
if (result != 1) {
throw new BaseException(DELETE_CATEGORY_FAIL);
} else {
return new BaseResponse<>("카테고리 삭제에 성공했습니다.");
}
} catch (BaseException exception) {
return new BaseResponse<>(exception.getStatus());
}
}
}
Checklist에 대하여 CRUD를 완성하였다.
나는 BaseException을 활용하여 예외처리를 하였다.
Item Controller
@RestController
@RequestMapping("/checklist")
public class ItemController {
@Autowired
private ItemService itemService;
// 새로운 item을 특정 checklist에 저장
@PostMapping("/{cId}/items")
public BaseResponse<ItemResponse> saveItem(@RequestHeader("Authorization") String accessToken, @PathVariable("cId") int cId) {
try {
ItemResponse itemResponse = itemService.saveItem(accessToken, cId);
return new BaseResponse<>(itemResponse);
} catch (BaseException exception) {
return new BaseResponse<>(exception.getStatus());
}
}
// 모든 item 정보 조회
@GetMapping("/items")
public BaseResponse<List<ItemResponse>> getAllItem() {
List<ItemResponse> itemResponses = itemService.getAllItem();
return new BaseResponse<>(itemResponses);
}
// 특정 체크리스트에 포함된 아이템 조회
@GetMapping("/{cId}/items/{iId}")
public BaseResponse<ItemResponse> getItemFromChecklist(@PathVariable("cId") int cId, @PathVariable("iId") int iId) {
try {
ItemResponse itemResponse = itemService.getItemFromChecklist(cId, iId);
return new BaseResponse<>(itemResponse);
} catch (BaseException exception) {
return new BaseResponse<>(exception.getStatus());
}
}
// 특정 checklist에 포함된 모든 item 정보조회
@GetMapping("/{cId}/items")
public BaseResponse<List<ItemResponse>> getallItemByChecklist(@PathVariable("cId") int cId) {
try {
List<ItemResponse> itemResponses = itemService.getallItemByChecklist(cId);
return new BaseResponse<>(itemResponses);
} catch (BaseException exception) {
return new BaseResponse<>(exception.getStatus());
}
}
@PatchMapping("/{cId}/items/{iId}")
public BaseResponse<ItemResponse> patchItem(
@RequestHeader("Authorization") String accessToken,
@PathVariable("cId") int cId,
@PathVariable("iId") int iId,
@RequestBody ItemRequest itemRequest) {
try {
ItemResponse itemResponse = itemService.patchItem(accessToken, cId, iId, itemRequest);
return new BaseResponse<>(itemResponse);
} catch (BaseException exception) {
return new BaseResponse<>(exception.getStatus());
}
}
// 특정 checklist에 포함된 item 삭제
@DeleteMapping("/{cId}/items/{iId}")
public BaseResponse<String> deleteItemFromChecklist(@RequestHeader("Authorization") String accessToken, @PathVariable("cId") int cId, @PathVariable("iId") int iId) {
try {
int result = itemService.deleteItem(accessToken, cId, iId);
if (result != 1) {
throw new BaseException(DELETE_ITEM_FAIL);
} else {
return new BaseResponse<>("준비물 삭제에 성공했습니다.");
}
} catch (BaseException exception) {
return new BaseResponse<>(exception.getStatus());
}
}
}
Item Controller에 대하여도 마찬가지로 CRUD를 완성하였다.
Item Controller 또한 BaseException을 사용하여 예외처리를 수행하였다.
반응형
'Develop > Spring Boot' 카테고리의 다른 글
[Spring JPA] 5. 체크리스트 만들기 - Repository, DTO 설정하기 (0) | 2023.08.28 |
---|---|
[Spring JPA] 4. 체크리스트 만들기 - Service 설정하기 (0) | 2023.08.28 |
[Spring JPA] 2. 체크리스트 만들기 - Entity 설정하기 (0) | 2023.08.28 |
[Spring JPA] 1. 체크리스트 만들기 - 초기 설정하기 (0) | 2023.08.25 |
[Error] HikariPool-1 - Thread starvation or clock leap detected (0) | 2023.08.05 |