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

[REFACTOR] 파일이 저장소에 존재하지 않을 때에 대한 응답 데이터 리팩토링 및 추가 예외 처리 #183

Merged
merged 4 commits into from
May 28, 2024

Conversation

SSung023
Copy link
Contributor

@SSung023 SSung023 commented May 27, 2024

PR 타입(하나 이상의 PR 타입을 선택해주세요)

☑ 기능 추가
□ 기능 삭제
□ 버그 수정
□ 의존성, 환경 변수, 빌드 관련 코드 업데이트


반영 브랜치

refactor/178-change-file-responsemain


변경 사항

  • FileResponsecreateNotExistFile()을 호출했을 때, encodedFile의 값으로 빈 문자열("")을 반환하도록 변경
  • FileManagergetEncodedImage() 메서드에서 파일을 받아오지 못한 경우 빈 문자열("") 반환하도록 변경
  • Topic 목록 조회/단일 조회, Instance 목록 조회/단일 조회, Profile 조회 경우에 대해 200번대 응답 코드 전송 및 빈 문자열 반환 확인
  • FileManagervalidateFileExist() 메서드를 추가하여, copy() 메서드 호출 이전에 validateFileExist()를 호출하여 원본 파일이 존재하는지 확인
    만일, 원본 파일이 존재하지 않는 경우에는 FILE_NOT_EXIST 예외를 발생하도록 처리
    • 특정 Topic을 통해 Instance를 생성할 때
      • Topic의 이미지가 없는 경우 && Instance 생성 시 이미지를 전달 O → 정상 작동 확인
      • Topic의 이미지가 없는 경우 && Instance 생성 시 이미지를 전달 X
        → 생성 API가 분리되어 있어, 인스턴스를 생성되고 파일은 저장되지 않는 문제점 발견 && 프론트측에 추가 처리 요청 완료

테스트 결과

image


연관된 이슈

#178 #179


리뷰 요구사항(선택)

SSung023 added 3 commits May 23, 2024 16:13
- 저장소에 파일이 존재하지 않을 때 반환 값을 빈 문자열("")로 변경
- 주석 추가
- 예외 상황에 맞도록 예외 코드 추가
- 원본 파일을 이용하는 파일 복사 로직에서, 원본 파일이 존재하지 않으면 예외 발생하는 코드 추가
@SSung023 SSung023 added 💡feature 기능 구현, 개선 사항 관련 ⚙️ refactor 리팩토링 🧑🏻‍💻 BE 백엔드 관련 코드 labels May 27, 2024
@SSung023 SSung023 self-assigned this May 27, 2024
Copy link

Test Results

 47 files   47 suites   25s ⏱️
262 tests 262 ✅ 0 💤 0 ❌
275 runs  275 ✅ 0 💤 0 ❌

Results for commit 408561b.

Copy link
Contributor

@kimdozzi kimdozzi left a comment

Choose a reason for hiding this comment

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

수고하셨습니다 !!!!!!

Copy link
Contributor

Choose a reason for hiding this comment

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

저희 나중에 ErrorCode 파일도 전체적으로 정리하면 좋을 것 같아요 :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

네 좋습니다!!
지금 저희가 BusinessException만 활용하고 있는데, 이 예외도 조금 세부적으로 나눠도 좋을 것 같아요! :)

@SSung023 SSung023 merged commit 9372bd4 into main May 28, 2024
2 checks passed
@SSung023 SSung023 deleted the refactor/178-change-file-reponse-code branch May 28, 2024 03:37
SSung023 added a commit that referenced this pull request Jun 8, 2024
* 무중단배포 테스트

* 무중단 배포 테스트

* [FEAT] AWS S3 파일 저장 이슈 해결 (#181)

* feat: aws s3 bucket access issue

- @crossorigin 어노테이션 추가

* feat: aws 적용 테스트

* chore: main yml 수정 (#182)

* [FEAT] nginx & docker-compose 무중단 배포  (#184)

* 무중단배포 테스트

* 무중단 배포 테스트

* feat: main.yml 수정

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* git actions & docker TEST

* git actions & docker TEST

* git actions & docker TEST

* self-hosted runners & docker compose test

* self-hosted runners & docker compose test

* self-hosted runners & docker compose test

* self-hosted runners & docker compose test

* docker compose & nginx test

* 최종 테스트

* 최종 테스트

* 최종 테스트

* 최종 테스트

* 최종 테스트

* 테스트

* feat: 무중단 배포 적용 완료

* feat: 무중단 배포 적용 완료

* feat: 무중단 배포 적용 완료

* chore: yml conflict 해결

* [REFACTOR] 파일이 저장소에 존재하지 않을 때에 대한 응답 데이터 리팩토링 및 추가 예외 처리 (#183)

* refactor: 파일이 존재하지 않을 때 반환 값 변경

- 저장소에 파일이 존재하지 않을 때 반환 값을 빈 문자열("")로 변경
- 주석 추가

* refactor: 예외 코드 추가 및 변경

- 예외 상황에 맞도록 예외 코드 추가

* feat: 파일 복사 시 예외 상황 추가 처리

- 원본 파일을 이용하는 파일 복사 로직에서, 원본 파일이 존재하지 않으면 예외 발생하는 코드 추가

* test: 예외 코드 추가에 따른 테스트 코드 변경

* [FEAT] Slack Webhook 적용 (#186)

* feat: Slack Webhook 적용

* feat: yml 수정

* [FIX] 추천 챌린지가 제대로 전달되지 않는 버그 픽스 (#187)

* fix: 추천 인스턴스가 제대로 뜨지 않는 버그 픽스

- 인스턴스의 태그의 개수 >= 사용자의 태그의 개수일 때, 추천 인스턴스가 제대로 뜨지 않는 버그 픽스
- 쿼리문을 in에서 like문으로 수정

* test: 추천 인스턴스 반환과 관련된 테스트 코드 작성

- 인스턴스가 여러 개의 태그를 가지고 있을 때, 제대로 반환하는지 확인
- 반환하는 데이터의 개수가 pageSize보다 적을 때/많을 때 페이징이 제대로 작동하는지 확인하는 테스트 코드 추가

* [FIX] FE에서 Item을 식별하는 코드가 제대로 설정되지 않는 버그 픽스 (#189)

* refactor: Item 식별 전용 Column 생성

- Item 식별 시 사용할 전용 Column 생성
- 식별 전용으로 사용할 것이기 때문에 unique=true로 설정

* feat: data.sql의 insert문을 변경된 구조에 맞게 수정

* feat: 식별자를 통해 Item을 반환하는 코드 및 테스트 코드 추가

- ItemProvider, ItemService에 식별자(identifier)를 통해 Item 객체를 찾는 코드 추가
- ItemController에서 전달받은 값(식별자)를 통해 Item 객체를 받은 후 전달하는 코드 추가
- 관련 테스트 코드 추가

* refactor: topic과 관련된 파일 조작 코드 삭제 (#199)

- 어드민의 Topic 생성 페이지에서 이미지를 받지 않기로 비지니스 로직을 수정함에 따라, FilesController 및 FilesService에서 Topic과 관련된 코드 삭제

* [FIX] 당일에 시작하는 챌린지에 참여할 수 있는 버그 픽스 (#198)

* refactor: 챌린지 참여 취소 성공 응답 메세지 변경

- 챌린지 참여 취소 성공 시 응답 메세지가 "참여 성공"으로 설정되어 있던 것을 "참여 취소 성공"으로 변경

* fix: 인스턴스 시작일에도 참여할 수 있는 버그 픽스

- 현재의 날짜가 인스턴스의 시작일보다 이전일 때에만 인스턴스에 참여할 수 있도록 조건 추가
- 관련 테스트 코드 수정

* [FEAT] 프로필 프레임 아이템 추가 (#196)

* feat: data.sql의 insert문에 프로필 프레임 3개 추가

* test: 테스트 코드 수정

* [FEAT] 배포 자동화 적용 (#195)

* feat: 배포자동화 Github Actions 워크플로우 작성

* feat: appspec.yml 파일 추가

* fix: 감지 브랜치를 production으로 국한

* fix: 인스턴스 상세 조회 시 좋아요 개수 버그 픽스 (#200)

- 사용자가 해당 인스턴스에 좋아요를 하지 않았을 때, 좋아요 개수를 0으로 보내던 문제 해결

* chore: 사용하지 않는 파일 삭제

* fix: 누락된 Slack webhook 설정 코드 추가

* fix: slack webhook 위치 조정

---------

Co-authored-by: kimdozzi <[email protected]>
SSung023 added a commit that referenced this pull request Jul 11, 2024
* 무중단배포 테스트

* 무중단 배포 테스트

* [FEAT] AWS S3 파일 저장 이슈 해결 (#181)

* feat: aws s3 bucket access issue

- @crossorigin 어노테이션 추가

* feat: aws 적용 테스트

* chore: main yml 수정 (#182)

* [FEAT] nginx & docker-compose 무중단 배포  (#184)

* 무중단배포 테스트

* 무중단 배포 테스트

* feat: main.yml 수정

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* feat: docker build and push script 작성

* git actions & docker TEST

* git actions & docker TEST

* git actions & docker TEST

* self-hosted runners & docker compose test

* self-hosted runners & docker compose test

* self-hosted runners & docker compose test

* self-hosted runners & docker compose test

* docker compose & nginx test

* 최종 테스트

* 최종 테스트

* 최종 테스트

* 최종 테스트

* 최종 테스트

* 테스트

* feat: 무중단 배포 적용 완료

* feat: 무중단 배포 적용 완료

* feat: 무중단 배포 적용 완료

* chore: yml conflict 해결

* [REFACTOR] 파일이 저장소에 존재하지 않을 때에 대한 응답 데이터 리팩토링 및 추가 예외 처리 (#183)

* refactor: 파일이 존재하지 않을 때 반환 값 변경

- 저장소에 파일이 존재하지 않을 때 반환 값을 빈 문자열("")로 변경
- 주석 추가

* refactor: 예외 코드 추가 및 변경

- 예외 상황에 맞도록 예외 코드 추가

* feat: 파일 복사 시 예외 상황 추가 처리

- 원본 파일을 이용하는 파일 복사 로직에서, 원본 파일이 존재하지 않으면 예외 발생하는 코드 추가

* test: 예외 코드 추가에 따른 테스트 코드 변경

* [FEAT] Slack Webhook 적용 (#186)

* feat: Slack Webhook 적용

* feat: yml 수정

* [FIX] 추천 챌린지가 제대로 전달되지 않는 버그 픽스 (#187)

* fix: 추천 인스턴스가 제대로 뜨지 않는 버그 픽스

- 인스턴스의 태그의 개수 >= 사용자의 태그의 개수일 때, 추천 인스턴스가 제대로 뜨지 않는 버그 픽스
- 쿼리문을 in에서 like문으로 수정

* test: 추천 인스턴스 반환과 관련된 테스트 코드 작성

- 인스턴스가 여러 개의 태그를 가지고 있을 때, 제대로 반환하는지 확인
- 반환하는 데이터의 개수가 pageSize보다 적을 때/많을 때 페이징이 제대로 작동하는지 확인하는 테스트 코드 추가

* [FIX] FE에서 Item을 식별하는 코드가 제대로 설정되지 않는 버그 픽스 (#189)

* refactor: Item 식별 전용 Column 생성

- Item 식별 시 사용할 전용 Column 생성
- 식별 전용으로 사용할 것이기 때문에 unique=true로 설정

* feat: data.sql의 insert문을 변경된 구조에 맞게 수정

* feat: 식별자를 통해 Item을 반환하는 코드 및 테스트 코드 추가

- ItemProvider, ItemService에 식별자(identifier)를 통해 Item 객체를 찾는 코드 추가
- ItemController에서 전달받은 값(식별자)를 통해 Item 객체를 받은 후 전달하는 코드 추가
- 관련 테스트 코드 추가

* refactor: topic과 관련된 파일 조작 코드 삭제 (#199)

- 어드민의 Topic 생성 페이지에서 이미지를 받지 않기로 비지니스 로직을 수정함에 따라, FilesController 및 FilesService에서 Topic과 관련된 코드 삭제

* [FIX] 당일에 시작하는 챌린지에 참여할 수 있는 버그 픽스 (#198)

* refactor: 챌린지 참여 취소 성공 응답 메세지 변경

- 챌린지 참여 취소 성공 시 응답 메세지가 "참여 성공"으로 설정되어 있던 것을 "참여 취소 성공"으로 변경

* fix: 인스턴스 시작일에도 참여할 수 있는 버그 픽스

- 현재의 날짜가 인스턴스의 시작일보다 이전일 때에만 인스턴스에 참여할 수 있도록 조건 추가
- 관련 테스트 코드 수정

* [FEAT] 프로필 프레임 아이템 추가 (#196)

* feat: data.sql의 insert문에 프로필 프레임 3개 추가

* test: 테스트 코드 수정

* [FEAT] 배포 자동화 적용 (#195)

* feat: 배포자동화 Github Actions 워크플로우 작성

* feat: appspec.yml 파일 추가

* fix: 감지 브랜치를 production으로 국한

* fix: 인스턴스 상세 조회 시 좋아요 개수 버그 픽스 (#200)

- 사용자가 해당 인스턴스에 좋아요를 하지 않았을 때, 좋아요 개수를 0으로 보내던 문제 해결

* chore: 사용하지 않는 파일 삭제

* fix: 누락된 Slack webhook 설정 코드 추가

* fix: slack webhook 위치 조정

* fix: 챌린지 시작 당일이 되었을 때 상태가 업데이트 되도록 버그 픽스 (#203)

- `ProgressService` - `updateToActivity()`의 조건문에서 챌린지 시작 당일일 때에도 상태 업데이트가 되도록 수정
- 챌린지 시작 당일에도 업데이트가 되는지 여부를 확인하는 테스트 코드 추가

* [FIX] 00시~오전 동안 PR 인식을 못하는 버그 픽스 (#206)

* refactor: Date -> KST 변환 메서드 이름 변경

- Date를 LocalDate(KST)로 변환하는 메서드의 이름을 더 직관적으로 변경

* fix: 요청 인증 일자를 페이로드에서 받아와서 사용하도록 수정

- LocalDate는 서버의 타임 존에 영향을 받기 때문에, LocalDate.now()가 아닌, 페이로드에서 요청 일자를 받아와서 사용하도록 코드 수정

* fix: 시스템의 타임존에 상관없이 KST로 변환하는 로직으로 변경

시스템의 타임존에 상관없이 KST 기준 시간으로 변환하는 로직 추가

* fix: 인증 컨트롤러에서 현재 일자를 받는 부분 수정

- 인증 컨트롤러에서 LocalDate.now()를 호출하던 부분을 DateUtil의 convertToKST를 통해 KST로 변환된 값을 입력하도록 수정
-

* fix: LocalDate.now()를 타임존에 영향받지 않는 코드로 변경

- LocalDate.now()를 DateUtil.convertToKST()로 변경하여 시스템 타임존에 영향받지 않도록 변경

* [FIX] 인스턴스 참가 취소 시 인스턴스 참여 인원, 상태 변화에 대한 버그 픽스 (#212)

* fix: 참여자 수 갱신 시 음수가 될 수 있는 버그 픽스

-  Instance 클래스 내에 참여자 수 갱신 메서드에서, 갱신된 값이 음수가 될 수 있는 경우에는 갱신시키지 않도록 처리

* fix: 인스턴스 참여 여부 확인 메서드 수정

- 인스턴스 참여 여부를 확인하는 로직에 오류가 있어 수정
- 참여 상태가 No일 때에도 참여로 간주하고 있어, No가 아닐 때에만 true를 반환하도록 수정

* fix: 진행 중인 챌린지 취소 시, 챌린지 현황의 시작 전 개수가 증가하는 버그 픽스

- JoinStatus가 NO(실패)일 때에, 챌린지 현황 조회에 포함되도록 로직 수정
- 챌린지 현황 조회에 사용하는 HashMap의 Key에 시작 전에 해당하는 READY 포함
- for문(반복문)을 Iterator로 변경 및 indent를 2에서 1로 감소

* [CHORE] GitGet Readme 업데이트  (#216)

* Create README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* [CHORE] README 업데이트

* chore: README 업데이트

* [FEAT] 예외 발생 시, Slack 채널에 메세지를 보내는 기능 추가 (#214)

* chore: slack 의존성 추가 및 불필요한 주석 제거

* chore: favicon error 해결을 위해 favicon.ico 추가

* feat: BusinessException 발생 시, Slack 채널에 메세지 보내는 기능 추가

- BusinessException 발생 시, Slack의 #exception-log 채널에 메세지를 보내는 기능 추가
- GlobalException에 대한 추가 처리도 필요
- .yml 파일에 slack 정보 추가  필요
- 스택 트레이스 가독성 개선 필요

* feat: Exception 발생 시 보내는 메세지 포멧 변경

- Exception 발생 시 전송하는 Slack 메세지에 예외 발생 시각 데이터 추가

* feat: 처리하지 않은 예외 외에 다른 예외 발생 시에도 Slack 메세지 보내도록 설정

* fix: prod 프로파일이 활성화되어 있을 때에만 메세지를 보내도록 설정

- Environment를 의존성 주입받아 prod(application-prod.yml) 프로파일이 활성화되어 있을 때에만 Slack 메세지를 보내도록 설정
- 각 ExceptionHandler가 MessageSender 인터페이스를 상속받고, sendSlackMessage() 메서드를 구현
- 테스트 및 개발 환경에서 Slack 메세지를 보내지 않는 점 확인

* chore: Deploy 조건 변경

- push, pull request에서 push로 변경

---------

Co-authored-by: kimdozzi <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🧑🏻‍💻 BE 백엔드 관련 코드 💡feature 기능 구현, 개선 사항 관련 ⚙️ refactor 리팩토링
Projects
None yet
2 participants