Skip to content

[refactor] SupabaseDBRequestBuilder 구조 개선 및 SRP/ISP에 맞게 리팩토링#91

Open
kelly-chui wants to merge 10 commits intodevfrom
refactor/#90/refactor-supabaseDB-query-builder
Open

[refactor] SupabaseDBRequestBuilder 구조 개선 및 SRP/ISP에 맞게 리팩토링#91
kelly-chui wants to merge 10 commits intodevfrom
refactor/#90/refactor-supabaseDB-query-builder

Conversation

@kelly-chui
Copy link
Copy Markdown
Contributor

🔖  Issue Number

close # 90

📙 작업 내역

구현 내용 및 작업 했던 내역을 적어주세요.

  • SupabaseDBQueryParameter 코드 간결화
  • SupabaseDBRequestBuilder, 각 메소드마다 빌더 따로 나누기
  • 빌더 테스트

📝 PR 특이사항

PR을 볼 때 팀원에게 알려야 할 특이사항을 알려주세요.

SupabaseDBRequestBuilder 단일 클래스에서 모든 메소드의 쿼리를 만들고 있어서 인터페이스 분리 원칙(ISP) 을 위반하고 있었습니다. 때문에 insert 작업에서 Query를 세팅하고, delete 작업에서 Data를 세팅할 수도 있는 잠재적인 문제가 있었습니다.

SRP/ISP를 지키기 위해 메소드에 따라 빌더 클래스를 각각 분리했습니다.

  • SupabaseDBRequestBuilder: setTable만 가지도록 변경했습니다. 모든 빌더 클래스의 슈퍼 클래스 역할을 합니다.
  • SupabaseDBRequest(insert, update ...)Builder: 각각의 메소드에 맞는 요청 구성 요소만 포함할 수 있도록 했습니다.
  • HasQuery, HasData: 요청에 쿼리와 데이터를 포함하게 해주는 프로토콜입니다.

한 가지 고민되는 점은 단일 파일을 많은 파일로 나눈 것 같아서, 이 부분이 어색하지 않은지 질문하고 싶습니다.
image

👻 레퍼런스

- case let 사용
- 리터럴 분리해서 관리
- 쿼리를 옵셔널이 아닌 빈 딕셔너리로 처리했습니다.
- 문법 에러 수정
- 요청의 메소드에 따라 빌더를 분리했습니다.
- 이제 Insert에서 setQuery를 하거나 delete에서 setData를 하는 것과 같은 문제를 방지할 수 있습니다.
@kelly-chui kelly-chui self-assigned this Jun 27, 2025
- 분리된 빌더를 통합해서 적용했습니다.
- SceneTest에서 Target 버전이 잘못 잡혀있는 것을 수정했습니다.
- 중복된 파일들 제거
- 씬 테스트에서 필요없는 빌드 페이즈 제거
Copy link
Copy Markdown
Contributor

@pearhyunjin pearhyunjin left a comment

Choose a reason for hiding this comment

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

확실히 파일 분리가 좀 과도한 것 처럼 느껴지는 것 같습니다.
Buildables 파일 만들어서 하나의 파일 안에서 SRP만 잘 지켜지도록 해도 괜찮지 않을까요?
각각 나뉜 파일에서 많은 일을 수행하는 것도 아니니까요..🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants