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: #154 FirebaseService 구현 #157

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from

Conversation

99yuseong
Copy link
Collaborator

@99yuseong 99yuseong commented Jan 3, 2025

FirebaseService -> FireStoreRepository

기존에는 Firebase 관련된 로직을 FirestoreService에서 관리했습니다.

작업 과정에서 RemoteStorageService를 준수하도록 변경하는 과정에서 원하는 것은 다음과 같았습니다.

  1. FireStoreRepository에서는 에러를 catch 후 단순 print하는 것이 아니라, 사용부로 적절한 Error를 던지게 한다.

  2. 기존 Widget 모듈의 동작 과정에 문제가 생기지 않도록 한다.

1. FireStoreError

Repository에서 발생하는 에러 + Firebase 자체에서 발생하는 에러를 구분하기 위한 처리를 진행했습니다.

Firebase 통신간 에러가 발생할 경우, 복잡한 에러를 처리하기보단 관련 정보를 받을 수 있도록 열거형에 추가 데이터를 선언할 수 있도록 했습니다.

Test 발생하는 에러를 검증하기 위해 Equatable을 준수하기 위해 가볍게 String으로 처리했습니다. (굳이 모든 Firebase Error를 처리할 필요 없음)

enum FireStoreError: Error, Equatable {
    // Repository 자체에서 발생하는 에러     
    case invalidUserName

    // Firebase 통신간 발생하는 에러
    case addUserFailed(error: String)
}

2. FireStoreRepository

class FireStoreRepository: RemoteStorageService

FireStoreError를 기반으로 FireStoreService의 로직을 참고해 코드를 수정하였습니다. 단, 현재 위젯 모듈 및 View에서 FireStoreService의 함수를 그대로 사용하고 있으므로, 신규 FireStoreRepository 클래스를 새롭게 선언했습니다.

주요 변경 사항

기존 FireStoreService에서는 uploadPhoto(userName:photoForSwiftData:) 호출 시

  1. Storage에 이미지 업로드
  2. FireStore에 사진 데이터 저장
    이 2가지 과정이 모두 진행이 되었다면

FireStoreRepository에서는 해당 기능이 분리되어 독립적으로 진행됩니다.

  1. func uploadPhotoData(of:photo:imgData:) -> String
    Storage에 이미지 업로드 후 urlString을 리턴하는 함수

  2. func addPhoto(_:urlString:)
    FireStore에 사진 데이터 저장

작업자의 한마디

우선 테스트 코드를 작성해보았는데, 이렇게 작성하는 게 맞나 싶네요... 나중에 고쳐야 할 듯!

@99yuseong 99yuseong added the Refactor 리팩토링 작업입니다. label Jan 3, 2025
@99yuseong 99yuseong self-assigned this Jan 3, 2025
@99yuseong 99yuseong linked an issue Jan 3, 2025 that may be closed by this pull request
3 tasks
@99yuseong 99yuseong added the In Progress 작업 중인 PR 입니다. label Jan 3, 2025
@99yuseong 99yuseong changed the title Refactor/firebase service Feat: #154 FirebaseService 구현 Jan 3, 2025
@99yuseong 99yuseong changed the title Feat: #154 FirebaseService 구현 Refactor: #154 FirebaseService 구현 Jan 3, 2025
@99yuseong 99yuseong added Ready to Review 리뷰가 준비된 PR 입니다. and removed In Progress 작업 중인 PR 입니다. labels Jan 7, 2025
@99yuseong 99yuseong changed the title Refactor: #154 FirebaseService 구현 Feat: #154 FirebaseService 구현 Jan 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Ready to Review 리뷰가 준비된 PR 입니다. Refactor 리팩토링 작업입니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[REFACTOR] FirebaseService 구현
1 participant