Created
December 4, 2020 06:57
-
-
Save gavrilaf/d4b40153b7fc853de6839f41fd376b2c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| final class AppAssembly { | |
| // private service | |
| private lazy var healthcheckProvider: HealthcheckProvider = { HealthcheckService(executor: resolve()) }() | |
| private lazy var authProvider: AuthProvider = { AuthService() }() | |
| private lazy var reviewProvider: ReviewProvider = { ReviewService(executor: resolve()) }() | |
| private lazy var followProvider: FollowProvider = { FollowService(executor: resolve()) }() | |
| private lazy var visionProvider: VisionProvider = { VisionService() }() | |
| private lazy var classifyingModel: ClassifyingModel = { ClassifyingModelBayes() }() | |
| private lazy var appRouter: AppRouter = { AppRouter() }() | |
| private lazy var userProfileProvider: ProfileProvider = { ProfileService(executor: resolve(), | |
| imageProcessor: resolve()) }() | |
| private lazy var profileProvider: ProfileUpdater = { ProfileUpdater(profileProvider: resolve(), | |
| session: resolve()) }() | |
| private lazy var uploadStorageProvider: JobsDBProvider = { | |
| do { | |
| return try UploadDatabaseWrapper(dbName: "upload_storage.sqlite") | |
| } | |
| catch { | |
| fatalError("DB initialization error \(error.localizedDescription)") | |
| } | |
| }() | |
| // internal service | |
| lazy var geocodingProvider: GeocodingProvider = { GeocodingService(executor: requestExecutor) }() | |
| lazy var galleryProvider: GalleryProvider = { GalleryService() }() | |
| lazy var settingsProvider: AppSettingsProvider = { AppSettingsUserDefaults() }() | |
| lazy var storage: Storage = { Storage() }() | |
| } | |
| // API and services layer | |
| extension AppAssembly { | |
| // private | |
| private func resolve() -> RequestExecutor { requestExecutor } | |
| private func resolve() -> JobsDBProvider { uploadStorageProvider } | |
| private func resolve() -> UploadAPIAdapter { uploadAPIAdapter } | |
| // internal | |
| func resolve() -> LinkHandler { linkHandler } | |
| func resolve() -> AppRouter { appRouter } | |
| func resolve() -> Storage { storage } | |
| func resolve() -> FollowProvider { followProvider } | |
| func resolve() -> UserSession { userSession } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment