MoviesSearchDIContainer
final class MoviesSearchDIContainer : MoviesSearchFlowCoordinatorDependencies
Movies Search 화면에 대한 의존성 주입을 관리하는 Container입니다.
-
MovieSearch 화면에서 필요한 Service를 구조체로 갖고 해당 구조체는
ApiDataTransferService
,ImageDataTransferService
를 갖고있습니다.- 해당
Dependencies
는AppDIContainer
에서makeMoviesSearchDIContainer()
메서드를 실행할 때 주입받습니다.
Declaration
Swift
struct Dependencies
- 해당
-
AppDIContainer에서 주입한 Service를 갖고있는 구조체 변수 입니다.
Declaration
Swift
private let dependencies: Dependencies
-
Local DB에 저장된 Movies queries 저장소를 불러오는 protocol service 입니다.
- 해당 service는 MoviesSearch에서만 수행하기 때문에 App DI Container에서 생성하지 않고, MoviesSearhDIContainer에서 직접 생성합니다.
Declaration
Swift
lazy var moviesQueriesStorage: MoviesQueriesStorage { get set }
-
Local DB에 저장된 Movies Response Cahce를 활용하기 위한 Service입니다.
- 해당 service는 MoviesSearch에서만 수행하기 때문에 App DI Container에서 생성하지 않고, MoviesSearhDIContainer에서 직접 생성합니다.
Declaration
Swift
lazy var moviesResponseCache: MoviesResponseStorage { get set }
-
Declaration
Swift
init(dependencies: Dependencies)
-
영화를 검색하는 Use Case입니다.
Declaration
Swift
func makeSearchMoviesUseCase() -> SearchMoviesUseCase
Return Value
Domain의 Search Movies Use Case를 Return 합니다.
-
영화의 검색 결과를 불러오는 Use Case입니다.
- 해당 Use Case는
DefaultMoviesQueryListViewModel
에서 구체화 됩니다.
Declaration
Swift
func makeFetchRecentMovieQueriesUseCase( requestValue: FetchRecentMovieQueriesUseCase.RequestValue, completion: @escaping (FetchRecentMovieQueriesUseCase.ResultValue) -> Void ) -> UseCase
Parameters
requestValue
Queries의 개수를 나타냅니다.
completion
Queries의 개수를 받고나서 나온 결과를 받습니다.
Return Value
FetchRecentMovieQueriesUseCase
클래스를 Return합니다. - 해당 Use Case는
-
Declaration
Swift
func makePosterImageUseCase() -> PosterImagesUseCase
-
영화를 검색하는 Repository를 불러오는 메서드입니다.
- 해당 Repo는
apiDataTransferService
와cache Local DB
필요하며, 해당 Service들을 주입받고 생성합니다.
Declaration
Swift
func makeMoviesRepository() -> MoviesSearchRepository
Return Value
DIP 원칙을 준수하는
MoviesSearchRepository
Protocol를 Return합니다. - 해당 Repo는
-
영화의 최근 검색 결과를 저장한 데이터를 보여주는 Repository를 불러오는 메서드입니다.
- 해당 Repo는
moviesQueriesStorage
활용이 필요하며, 해당 Service를 주입받고 생성합니다.
Declaration
Swift
func makeMoviesQueriesRepository() -> MoviesQueriesRepository
Return Value
DIP 원칙을 준수하는
MoviesQueriesRepository
Protocol를 Return합니다. - 해당 Repo는
-
영화 Poster Image를 불러오는 Repository를 불러오는 메서드입니다.
- 해당 Repo는
imageDataTransferService
활용이 필요하며, 해당 Service를 주입받고 생성합니다.
Declaration
Swift
func makePosterImagesRepository() -> PosterImagesRepository
Return Value
DIP 원칙을 준수하는
PosterImagesRepository
Protocol를 Return합니다. - 해당 Repo는
-
Movie Search Scene View Controller를 불러오는 메서드입니다.
Declaration
Swift
func makeMoviesSearchViewController( actions: MoviesSearchViewModelActions) -> MoviesSearchViewController
Parameters
actions
flow coordinator에서 활용되는 actions 구조체입니다. 이는 ViewModel을 만드는 메서드에 직접 주입합니다.
Return Value
MoviesListViewController
를 Return 합니다. -
Movie Search View Model를 불러오는 메서드입니다.
Declaration
Swift
private func makeMoviesListViewModel(actions: MoviesSearchViewModelActions) -> MoviesSearchViewModel
Parameters
actions
flow coordinator에서 활용되는 actions 구조체입니다.
Return Value
MoviesListViewModel
Return합니다.
-
Movie Detail View Controller를 불러오는 메서드입니다.
Declaration
Swift
func makeMoviesDetailsViewController(movie: MovieWhenSearch) -> MovieDetailsViewController
Parameters
movie
클릭된 데이터,
MovieWhenSearch
Domain의 Entity를 파라미터로 받습니다. 해당 구조체는 Detail View Model에 주입합니다.Return Value
MovieDetailsViewController
를 Return합니다. -
Movie Detail View Model를 불러오는 메서드입니다.
Declaration
Swift
private func makeMoviesDetailViewModel(movie: MovieWhenSearch) -> MovieDetailsViewModel
Parameters
movie
클릭된 데이터,
MovieWhenSearch
Domain의 Entity를 파라미터로 받습니다.Return Value
MovieDetailsViewModel
를 Return합니다.
-
Movie Query List View Controller를 불러오는 메서드입니다.
Declaration
Swift
func makeMoviesQueriesSuggestionsListViewController(didSelect: @escaping MoviesQueryListViewModelDidSelectAction) -> MoviesQueriesTableViewController
Parameters
didSelect
typealias
MoviesQueryListViewModelDidSelectAction
를 파라미터로 받습니다. 해당 액션은 (MovieQuery
) -> Void 클로저 함수이며, 이는DefaultMoviesListViewModel
의update
메서드 입니다.Return Value
MoviesQueriesTableViewController
를 Return합니다. -
Movie Query List View Model를 불러오는 메서드입니다.
Declaration
Swift
func makeMoviesQueryListViewModel(didSelect: @escaping MoviesQueryListViewModelDidSelectAction) -> MoviesQueryListViewModel
Parameters
didSelect
typealias
MoviesQueryListViewModelDidSelectAction
를 파라미터로 받습니다. 해당 액션은 (MovieQuery
) -> Void 클로저 함수이며, 이는DefaultMoviesListViewModel
의update
메서드 입니다.Return Value
MoviesQueryListViewModel
를 Return합니다.
-
MoviesSearchFlowCoordinator를 불러오는 메서드입니다.
- 해당 함수는
AppFlowCoordinator
에서 실행합니다.
Declaration
Swift
func makeMovieSearchFlowCoordinator(navigationController: UINavigationController) -> MoviesSearchFlowCoordinator
Parameters
navigationController
해당 화면의
UINavigationController
를 파라미터로 받습니다.Return Value
MoviesSearchFlowCoordinator
를 Return합니다. - 해당 함수는