레벨 3이다. 테이블이 하나가 추가가 되고, FK를 적절히 사용해야 한다.
처음에 만들어둔 erd대로 db를 수정하고 시작하면 된다.
우선 author 테이블을 추가해주고,
ide에서 외래 키도 추가해준다.
짠
그리고, author 클래스 작업에 앞서서 일단 예외처리를 먼저 빨리 설정해주고싶었다.
예외처리를 그동안 badinputexception("오류요")로 대충 퉁쳤다. "오류요"가 더 늘어나면 이제부터 수정할 때 힘들어질 게 뻔하니까 예외클래스 먼저 만들어놓고 시작하자.
@Getter
public class CustomException extends RuntimeException {
private final ErrorCode errorCode;
public CustomException(ErrorCode errorCode) {
super(errorCode.getMessage());
this.errorCode = errorCode;
}
}
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CustomException.class)
public ResponseEntity<Map<String, Object>> handleCustomException(CustomException e){
ErrorCode errorCode = e.getErrorCode();
return ResponseEntity.status(errorCode.getStatus())
.body(Map.of(
"⛔: ", errorCode.getMessage(),
"에러코드: ", errorCode.getStatus()
));
}
}
@Getter
@AllArgsConstructor
public enum ErrorCode {
BAD_REQUEST(HttpStatus.BAD_REQUEST, "비밀번호를 잘못 입력하였습니다."),
USER_NOT_FOUND(HttpStatus.BAD_REQUEST, "존재하지 않는 사용자입니다."),
NOT_FOUND(HttpStatus.NOT_FOUND, "404: 없는 페이지입니다."),
FORBIDDEN_OPERATION(HttpStatus.FORBIDDEN, "권한이 없습니다."),
INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "500: 서버 관리를 못해서 줴송합니다.."),
BAD_GATEWAY(HttpStatus.BAD_GATEWAY, "502: 잘못된 접근입니다.");
private final HttpStatus status;
private final String message;
}
에러코드를 enum으로 만들고 exceptionhandler를 통해 전역적으로 같은 에러코드와 형식으로 처리되게 만들었다.
기존 exception들을 customexception으로 바꿔줬다.
그리고 "이미 삭제된 정보를 조회하려 할 때" 라는 예외조건이 있어서,
boolean type의 is_deleted 열을 schedule 테이블에 추가해줬다.
근데.. 막막하다. 지금의 구조를 어떻게 둘로 나누지..
'개인 공부용 프로젝트 > schedule.jdbc.api' 카테고리의 다른 글
도전과제 과정 (0) | 2024.12.09 |
---|---|
트러블슈팅 : 필수과제 버그 수정 (0) | 2024.12.05 |
Lv1, Lv2 (0) | 2024.12.04 |