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

[feat] 이미지 rollback 기능 구현 #392

Merged

Conversation

kmi0817
Copy link
Collaborator

@kmi0817 kmi0817 commented Jan 12, 2024

🌎 PR 요약

🌱 작업한 브랜치

📚 작업한 내용

에러가 발생했을 때 기존에 스토리지에서 삭제/저장한 이미지를 어떻게 rollback 할까 고민하던 중...
단순히 try ~ catch문으로 해결할 수 있단 걸 깨달았습니다 ㅎㅎ... 타임라인 생성과 수정에만 롤백 기능이 필요하고, 삭제할 때는 필요가 없더군요!

  • 타임라인 생성 시

    • 스토리지에 이미지 A 저장 (저장 경로를 변수에 할당)
    • SQL문 처리
    • 만약 SQL문 처리 과정에서 에러가 발생하면, catch문에서 스토리지에서 이미지 A 삭제
  • 타임라인 수정 시

    • 상황: 기존 스토리지에 이미지 A 저장되어 있고, 변경하려는 이미지는 X
    • 로직
      • 스토리지에 이미지 X 저장 (저장 경로를 변수에 할당)
      • 모든 SQL문 처리
      • return 직전에 기존 이미지 A 삭제
      • 만약 SQL문 처리 과정에서 에러가 발생하면, catch문에서 스토리지에서 새로 저장한 이미지 X 삭제 (이미지 A는 그대로 존재함)
  • 타임라인 삭제 시 (코드 변화 없긴 합니다!)

    • SQL문 처리
    • return 직전에 스토리지에서 이미지 X 삭제
    • 만약 SQL문 처리 과정에서 에러가 발생하더라도, 아직 스토리지에서 이미지 X가 삭제되지 않았으므로 별도 try ~ catch문 필요 없음

📍 참고 사항

반복되는 try ~ catch문을 interceptor로 만들어서 처리해볼까 했는데, 스토리지에 새로 저장하는 이미지의 경로는 동적으로 변수에 할당되기 때문에 interceptor 코드에서 어떻게 알아낼 수 없을 것 같더라고요. 메서드를 실행하면서 알 수 있는 이미지 경로를 interceptor 코드에서도 알아낼 수 있다면 알려주세요!! ㅎㅎ

관련 이슈

@kmi0817 kmi0817 added 💽 BE 백엔드 작업 시 📚Timeline 타임라인 작업 시 labels Jan 12, 2024
@kmi0817 kmi0817 requested a review from yaongmeow January 12, 2024 11:30
@kmi0817 kmi0817 self-assigned this Jan 12, 2024
@kmi0817 kmi0817 linked an issue Jan 12, 2024 that may be closed by this pull request
1 task
@yaongmeow yaongmeow merged commit c332c08 into boostcampwm2023:be-develop Jan 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💽 BE 백엔드 작업 시 📚Timeline 타임라인 작업 시
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[feat] 이미지 rollback 기능 구현
2 participants