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

레시피 업로드 Domain, Data 영역을 정의해 보았습니다. #18

Merged
merged 13 commits into from
Jul 24, 2024

Conversation

GeonH0
Copy link
Collaborator

@GeonH0 GeonH0 commented Jul 21, 2024

레시피 업로드 도메인 영역 정의

  • 레시피 업로드에 필요한 비즈니스 로직을 처리하기 위해 AddRecipeInteractor와 AddRecipeUseCase를 정의했습니다.
  • AddRecipeInteractor는 뷰와 상호작용하며 데이터 처리를 담당합니다
  • AddRecipeUseCase는 입력 데이터의 유효성 검증, 변환 작업 및 레시피 저장과 관련된 실제 비즈니스 로직을 실행합니다.
  • 레시피 업로드에 조건을 충족 하지 못할경우 Error를 발생시키기 위해 AddRecipeError를 정의했습니다.
  • Delegate를 활용하여 UI의 ViewModel을 공유 합니다.

레시피 업로드 데이터 영역 정의

  • 레시피 업로드를 성공하면 Return 되는 값을 DTO로 정의해 보았습니다 -> RecipeUploadResponseDTO
  • 레시피 업로드에 필요한 값들을 RecipeUploadDTO로 관리했습니다.
  • 이미지들은 이미지 데이터 형식으로 보내주어야 하여 imagesURL 형식이 아닌 UIImage를 전달받았습니다.
  • MultipartFormDataRequest를 생성하여 폼데이터 형식으로 post 할 수 있도록 하였습니다.
  • BaseNetworkService에 Post방식을 정의하였습니다.

import RxSwift

protocol AddRecipeInteractorDelegate: AnyObject {
func didLoadRecipeData(viewModel: AddRecipeViewModel)

Choose a reason for hiding this comment

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

didLoadRecipe 정도로 해도 괜찮을 것 같아요. viewModel을 넘겨서 구성하는데 너무 도메인적인 네이밍 같아요.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

[58b4cc8] 수정했습니다

) -> Single<Result<Recipe, AddRecipeError>>
}

class AddRecipeUseCaseImpl: AddRecipeUseCase {

Choose a reason for hiding this comment

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

final class 검토부탁해요

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

[54cdfca] 수정했습니다

Comment on lines +37 to +47
guard !images.isEmpty else {
return .just(.failure(.noImages))
}

guard !title.isBlank else {
return .just(.failure(.titleIsEmpty))
}

guard description.count > 10 else {
return .just(.failure(.descriptionTooShort))
}

Choose a reason for hiding this comment

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

좋네요 👍

Comment on lines 50 to 51
)
-> Single<T> {

Choose a reason for hiding this comment

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

여긴 왜 줄바꿈하셨나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

어떤식으로 줄바꿈 해야할지 몰라서 저런식으로 한건데 저 부분은 50번째 줄로 올리겠습니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

[ed32a83] 수정했습니다

)
}

formDataRequest.finalize()

Choose a reason for hiding this comment

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

for문 내에서 하지 않고 밖에서 하는 이유가 있을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

finalize는 전체 요청이 완성된후 1번만 호출되어야 하기 떄문입니다

Copy link

@f-lab-barry f-lab-barry left a comment

Choose a reason for hiding this comment

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

수고많으셨어요~ 오늘 말씀드린 레이어간의 네이밍도 추후 개선해주시면 좋을 것 같습니다.

@GeonH0 GeonH0 merged commit 890f83d into main Jul 24, 2024
1 check passed
Copy link

@GeonH0 GeonH0 deleted the feature/UploadDomainData branch September 12, 2024 01:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants