Skip to content

Commit

Permalink
Code Refactoring: 컨트롤러에서 예외 관련 로직 전부 제거
Browse files Browse the repository at this point in the history
  • Loading branch information
KiSeungMin committed Jan 28, 2025
1 parent d5aa617 commit f822999
Show file tree
Hide file tree
Showing 8 changed files with 182 additions and 436 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ public class AuthController {
private final JwtTokenService jwtTokenService;
private final UserService userService;

// 게스트 로그인
// 게스트 로그인
@ResponseStatus(HttpStatus.OK)
@PostMapping("/login/guest")
public TokenResponseDto guestLogin() {
UserResponseDto user = userService.registerGuestUser();
return jwtTokenService.generateTokens(user);
}

// 소셜 로그인
// 소셜 로그인
@ResponseStatus(HttpStatus.OK)
@PostMapping("/login/social")
public TokenResponseDto socialLogin(@RequestBody UserRegisterDto userRegisterDto) {
Expand All @@ -39,15 +39,15 @@ public TokenResponseDto socialLogin(@RequestBody UserRegisterDto userRegisterDto
return jwtTokenService.generateTokens(user);
}

// Access Token 검증
// Access Token 검증
@ResponseStatus(HttpStatus.OK)
@GetMapping("/verifyAccessToken")
public String verifyAccessToken(@RequestHeader("Authorization") String authorizationHeader) {
jwtTokenService.verifyAccessToken(authorizationHeader);
return "Token is valid";
}

// Refresh Token을 이용한 Access Token 재발급
// Refresh Token을 이용한 Access Token 재발급
@ResponseStatus(HttpStatus.OK)
@PostMapping("/refresh")
public TokenResponseDto refreshToken(@RequestBody TokenRequestDto tokenRequestDto) {
Expand Down
133 changes: 43 additions & 90 deletions src/main/java/com/aisip/OnO/backend/controller/FolderController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@
import com.aisip.OnO.backend.Dto.Folder.FolderRegisterDto;
import com.aisip.OnO.backend.Dto.Folder.FolderResponseDto;
import com.aisip.OnO.backend.service.FolderService;
import io.sentry.Sentry;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;

Expand All @@ -21,111 +19,66 @@ public class FolderController {

private final FolderService folderService;

// ✅ 모든 폴더 조회
@ResponseStatus(HttpStatus.OK)
@GetMapping("")
public ResponseEntity<?> getAllFolders(Authentication authentication) {
try {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: " + userId + " try to get all folder");

return ResponseEntity.ok(folderService.findAllFolders(userId));
} catch (Exception e) {
log.warn(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("폴더 탐색에 실패했습니다.");
}
public List<FolderResponseDto> getAllFolders(Authentication authentication) {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: {} 요청 - 모든 폴더 조회", userId);
return folderService.findAllFolders(userId);
}

// ✅ 루트 폴더 조회
@ResponseStatus(HttpStatus.OK)
@GetMapping("/root")
public ResponseEntity<?> getRootFolder(Authentication authentication) {
try {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: " + userId + " try to get root folder");

return ResponseEntity.ok(folderService.findRootFolder(userId));
} catch (Exception e) {
log.warn(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("폴더 탐색에 실패했습니다.");
}
public FolderResponseDto getRootFolder(Authentication authentication) {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: {} 요청 - 루트 폴더 조회", userId);
return folderService.findRootFolder(userId);
}

// ✅ 특정 폴더 조회
@ResponseStatus(HttpStatus.OK)
@GetMapping("/{folderId}")
public ResponseEntity<?> getFolder(Authentication authentication, @PathVariable Long folderId) {

try {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: " + userId + " try to get folderId: " + folderId);

return ResponseEntity.ok(folderService.findFolder(userId, folderId));
} catch (Exception e) {
log.warn(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("폴더 탐색에 실패했습니다.");
}
public FolderResponseDto getFolder(Authentication authentication, @PathVariable Long folderId) {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: {} 요청 - folderId: {} 조회", userId, folderId);
return folderService.findFolder(userId, folderId);
}

@PostMapping()
public ResponseEntity<?> createFolder(Authentication authentication, @RequestBody FolderRegisterDto folderRegisterDto) {
try {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: " + userId + " try to create folder");

FolderResponseDto folderResponseDto = folderService.createFolder(userId, folderRegisterDto.getFolderName(), folderRegisterDto.getParentFolderId());

return ResponseEntity.ok(folderResponseDto);
} catch (Exception e) {
log.warn(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("폴더 생성에 실패했습니다.");
}
// ✅ 폴더 생성
@ResponseStatus(HttpStatus.CREATED)
@PostMapping
public FolderResponseDto createFolder(Authentication authentication, @RequestBody FolderRegisterDto folderRegisterDto) {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: {} 요청 - 폴더 생성", userId);
return folderService.createFolder(userId, folderRegisterDto.getFolderName(), folderRegisterDto.getParentFolderId());
}

// ✅ 폴더 수정
@ResponseStatus(HttpStatus.OK)
@PatchMapping("/{folderId}")
public ResponseEntity<?> updateFolder(Authentication authentication, @PathVariable Long folderId, @RequestBody FolderRegisterDto folderRegisterDto) {
try {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: " + userId + " try to update folderId: " + folderId);

FolderResponseDto folderResponseDto = folderService.updateFolder(userId, folderId, folderRegisterDto.getFolderName(), folderRegisterDto.getParentFolderId());

return ResponseEntity.ok(folderResponseDto);
} catch (Exception e) {
log.warn(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("폴더 생성에 실패했습니다.");
}
public FolderResponseDto updateFolder(Authentication authentication, @PathVariable Long folderId, @RequestBody FolderRegisterDto folderRegisterDto) {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: {} 요청 - 폴더 수정: folderId: {}", userId, folderId);
return folderService.updateFolder(userId, folderId, folderRegisterDto.getFolderName(), folderRegisterDto.getParentFolderId());
}

// ✅ 문제 경로 수정
@ResponseStatus(HttpStatus.OK)
@PatchMapping("/problem")
public ResponseEntity<?> updateProblemPath(Authentication authentication, @RequestBody Long problemId, @RequestBody Long folderId) {
try {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: " + userId + " try to update folderId: " + folderId);

FolderResponseDto folderResponseDto = folderService.updateProblemPath(userId, problemId, folderId);

return ResponseEntity.ok(folderResponseDto);
} catch (Exception e) {
log.warn(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("문제 경로 변경에 실패했습니다.");
}
public FolderResponseDto updateProblemPath(Authentication authentication, @RequestParam Long problemId, @RequestParam Long folderId) {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: {} 요청 - 문제 경로 수정: folderId: {}, problemId: {}", userId, folderId, problemId);
return folderService.updateProblemPath(userId, problemId, folderId);
}

// ✅ 폴더 삭제
@ResponseStatus(HttpStatus.OK)
@DeleteMapping("")
public ResponseEntity<?> deleteFolders(
Authentication authentication,
@RequestParam List<Long> deleteFolderIdList) {
try {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: " + userId + " try to delete folders, id list: " + deleteFolderIdList.toString());

folderService.deleteFolderList(userId, deleteFolderIdList);
return ResponseEntity.ok("삭제가 완료되었습니다.");
} catch (Exception e) {
log.warn(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("폴더 삭제에 실패했습니다.");
}
public void deleteFolders(Authentication authentication, @RequestParam List<Long> deleteFolderIdList) {
Long userId = (Long) authentication.getPrincipal();
log.info("userId: {} 요청 - 폴더 삭제: {}", userId, deleteFolderIdList);
folderService.deleteFolderList(userId, deleteFolderIdList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,15 @@
import com.aisip.OnO.backend.Dto.Process.ImageProcessRegisterDto;
import com.aisip.OnO.backend.entity.Image.ImageType;
import com.aisip.OnO.backend.entity.Problem.Problem;
import com.aisip.OnO.backend.exception.ProblemNotFoundException;
import com.aisip.OnO.backend.service.FileUploadService;
import com.aisip.OnO.backend.service.ProblemService;
import io.sentry.Sentry;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Map;

@Slf4j
Expand All @@ -28,55 +24,41 @@ public class ImageProcessController {

private final FileUploadService fileUploadService;

@ResponseStatus(HttpStatus.OK)
@PostMapping("/problemImage")
public ResponseEntity<?> registerProblemImage(
public Map<String, Object> registerProblemImage(
Authentication authentication,
@RequestParam("problemImage") MultipartFile problemImage
) {
try {
Long userId = (Long) authentication.getPrincipal();
Problem problem = problemService.createProblem(userId);
Long userId = (Long) authentication.getPrincipal();
Problem problem = problemService.createProblem(userId);
String problemImageUrl = fileUploadService.uploadFileToS3(problemImage, problem, ImageType.PROBLEM_IMAGE);

String problemImageUrl = fileUploadService.uploadFileToS3(problemImage, problem, ImageType.PROBLEM_IMAGE);

return ResponseEntity.ok(Map.of("problemId", problem.getId(), "problemImageUrl", problemImageUrl));
} catch (ProblemNotFoundException | IOException e) {
log.error(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("이미지 등록에 실패했습니다.");
}
return Map.of("problemId", problem.getId(), "problemImageUrl", problemImageUrl);
}

// ✅ 이미지 분석 요청
@ResponseStatus(HttpStatus.OK)
@PostMapping("/analysis")
public ResponseEntity<?> getProblemAnalysis(
public Map<String, String> getProblemAnalysis(
Authentication authentication,
@RequestBody Map<String, String> requestBody
) {
try {
String problemImageUrl = requestBody.get("problemImageUrl");
String analysisResult = fileUploadService.getProblemAnalysis(problemImageUrl);
String problemImageUrl = requestBody.get("problemImageUrl");
String analysisResult = fileUploadService.getProblemAnalysis(problemImageUrl);

return ResponseEntity.ok(Map.of("analysis", analysisResult));
} catch (Exception e) {
log.error(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("이미지 분석에 실패했습니다.");
}
return Map.of("analysis", analysisResult);
}

// ✅ 이미지 보정 요청
@ResponseStatus(HttpStatus.OK)
@PostMapping("/processImage")
public ResponseEntity<?> getProcessImage(
public Map<String, String> getProcessImage(
Authentication authentication,
@RequestBody ImageProcessRegisterDto imageProcessRegisterDto
) {
try {
String processImageUrl = fileUploadService.getProcessImage(imageProcessRegisterDto);
) {
String processImageUrl = fileUploadService.getProcessImage(imageProcessRegisterDto);

return ResponseEntity.ok(Map.of("processImageUrl", processImageUrl));
} catch (Exception e) {
log.error(e.getMessage());
Sentry.captureException(e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("이미지 보정에 실패했습니다.");
}
return Map.of("processImageUrl", processImageUrl);
}
}
Loading

0 comments on commit f822999

Please sign in to comment.