Skip to content

Commit

Permalink
update use cases
Browse files Browse the repository at this point in the history
  • Loading branch information
rcaos committed Oct 31, 2024
1 parent 0514ddd commit 228bc77
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 69 deletions.
7 changes: 5 additions & 2 deletions Sources/ShowDetailsFeature/DIContainer/DIContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,12 @@ final class DIContainer {
mapper: DefaultTVShowDetailsMapper(),
imageBasePath: dependencies.imagesBaseURL
)

// wip
return DefaultFetchTVShowDetailsUseCase(
tvShowDetailsRepository: tvShowDetailsRepository,
tvShowsVisitedRepository: dependencies.showsPersistenceRepository
tvShowDetailsRepository: tvShowDetailsRepository
// ,
// tvShowsVisitedRepository: dependencies.showsPersistenceRepository
)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
//
// FetchEpisodesUseCase.swift
// TVToday
//
// Created by Jeans Ruiz on 1/20/20.
// Copyright © 2020 Jeans. All rights reserved.
//

import Combine
import NetworkingInterface

protocol FetchEpisodesUseCase {
func execute(requestValue: FetchEpisodesUseCaseRequestValue) -> AnyPublisher<TVShowSeason, DataTransferError>
func execute(request: FetchEpisodesUseCaseRequestValue) async throws -> TVShowSeason
}

struct FetchEpisodesUseCaseRequestValue {
Expand All @@ -27,10 +20,10 @@ final class DefaultFetchEpisodesUseCase: FetchEpisodesUseCase {
self.episodesRepository = episodesRepository
}

func execute(requestValue: FetchEpisodesUseCaseRequestValue) -> AnyPublisher<TVShowSeason, DataTransferError> {
return episodesRepository.fetchEpisodesList(
for: requestValue.showIdentifier,
season: requestValue.seasonNumber
func execute(request: FetchEpisodesUseCaseRequestValue) async throws -> TVShowSeason {
return try await episodesRepository.fetchEpisodesList(
for: request.showIdentifier,
season: request.seasonNumber
)
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
//
// FetchTVAccountStates.swift
// TVToday
//
// Created by Jeans Ruiz on 6/23/20.
// Copyright © 2020 Jeans. All rights reserved.
//

import Combine
import Shared
import NetworkingInterface

protocol FetchTVAccountStates {
func execute(requestValue: FetchTVAccountStatesRequestValue) -> AnyPublisher<TVShowAccountStatus, DataTransferError>
func execute(request: FetchTVAccountStatesRequestValue) async throws -> TVShowAccountStatus
}

struct FetchTVAccountStatesRequestValue {
Expand All @@ -25,7 +19,7 @@ final class DefaultFetchTVAccountStates: FetchTVAccountStates {
self.accountShowsRepository = accountShowsRepository
}

func execute(requestValue: FetchTVAccountStatesRequestValue) -> AnyPublisher<TVShowAccountStatus, DataTransferError> {
return accountShowsRepository.fetchTVShowStatus(tvShowId: requestValue.showId)
func execute(request: FetchTVAccountStatesRequestValue) async throws -> TVShowAccountStatus {
return try await accountShowsRepository.fetchTVShowStatus(tvShowId: request.showId)
}
}
35 changes: 13 additions & 22 deletions Sources/ShowDetailsFeature/Domain/UseCases/FetchTVShowDetails.swift
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
//
// FetchTVShowDetails.swift
// TVToday
//
// Created by Jeans Ruiz on 1/16/20.
// Copyright © 2020 Jeans. All rights reserved.
//

import Combine
import Foundation
import NetworkingInterface
import Persistence
Expand All @@ -15,7 +10,7 @@ import UI

public protocol FetchTVShowDetailsUseCase {
// MARK: - TODO Use another error maybe?
func execute(requestValue: FetchTVShowDetailsUseCaseRequestValue) -> AnyPublisher<TVShowDetail, DataTransferError>
func execute(request: FetchTVShowDetailsUseCaseRequestValue) async throws -> TVShowDetail
}

public struct FetchTVShowDetailsUseCaseRequestValue {
Expand All @@ -25,25 +20,21 @@ public struct FetchTVShowDetailsUseCaseRequestValue {
// MARK: - FetchTVShowDetailsUseCase
public final class DefaultFetchTVShowDetailsUseCase: FetchTVShowDetailsUseCase {
private let tvShowDetailsRepository: TVShowsDetailsRepository
private let tvShowsVisitedRepository: ShowsVisitedLocalRepositoryProtocol // MARK: - TODO, Move this logic to TVShowsDetailsRepository

// wip
//private let tvShowsVisitedRepository: ShowsVisitedLocalRepositoryProtocol // MARK: - TODO, Move this logic to TVShowsDetailsRepository

public init(tvShowDetailsRepository: TVShowsDetailsRepository,
tvShowsVisitedRepository: ShowsVisitedLocalRepositoryProtocol) {
public init(
tvShowDetailsRepository: TVShowsDetailsRepository
//tvShowsVisitedRepository: ShowsVisitedLocalRepositoryProtocol
) {
self.tvShowDetailsRepository = tvShowDetailsRepository
self.tvShowsVisitedRepository = tvShowsVisitedRepository
//self.tvShowsVisitedRepository = tvShowsVisitedRepository
}

public func execute(requestValue: FetchTVShowDetailsUseCaseRequestValue) -> AnyPublisher<TVShowDetail, DataTransferError> {
return tvShowDetailsRepository
.fetchTVShowDetails(with: requestValue.identifier)
.receive(on: defaultScheduler)
.flatMap { [tvShowsVisitedRepository] details -> AnyPublisher<TVShowDetail, DataTransferError> in
return tvShowsVisitedRepository.saveShow(id: details.id,
pathImage: details.posterPathURL?.absoluteString ?? "")
.map { _ -> TVShowDetail in details }
.mapError { _ -> DataTransferError in DataTransferError.noResponse }
.eraseToAnyPublisher()
}
.eraseToAnyPublisher()
public func execute(request: FetchTVShowDetailsUseCaseRequestValue) async throws -> TVShowDetail {
let showDetails = try await tvShowDetailsRepository.fetchTVShowDetails(with: request.identifier)
//await tvsVisitedRepository.saveShow(id: dto.id, pathImage: dto.posterPathURL?.absoluteString ?? "")
return showDetails
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
//
// MarkAsFavoriteUseCase.swift
// TVToday
//
// Created by Jeans Ruiz on 6/23/20.
// Copyright © 2020 Jeans. All rights reserved.
//

import Combine
import Shared
import NetworkingInterface

public protocol MarkAsFavoriteUseCase {
func execute(requestValue: MarkAsFavoriteUseCaseRequestValue) -> AnyPublisher<Bool, DataTransferError>
func execute(request: MarkAsFavoriteUseCaseRequestValue) async throws -> Bool
}

public struct MarkAsFavoriteUseCaseRequestValue {
Expand All @@ -26,12 +21,11 @@ public final class DefaultMarkAsFavoriteUseCase: MarkAsFavoriteUseCase {
self.accountShowsRepository = accountShowsRepository
}

public func execute(requestValue: MarkAsFavoriteUseCaseRequestValue) -> AnyPublisher<Bool, DataTransferError> {
return accountShowsRepository.markAsFavorite(
tvShowId: requestValue.showId,
favorite: requestValue.favorite
public func execute(request: MarkAsFavoriteUseCaseRequestValue) async throws -> Bool {
_ = try await accountShowsRepository.markAsFavorite(
tvShowId: request.showId,
favorite: request.favorite
)
.map { _ in requestValue.favorite }
.eraseToAnyPublisher()
return request.favorite
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
//
// SaveToWatchList.swift
// TVToday
//
// Created by Jeans Ruiz on 6/23/20.
// Copyright © 2020 Jeans. All rights reserved.
//

import Combine
import Shared
import NetworkingInterface

public protocol SaveToWatchListUseCase {
func execute(requestValue: SaveToWatchListUseCaseRequestValue) -> AnyPublisher<Bool, DataTransferError>
func execute(request: SaveToWatchListUseCaseRequestValue) async throws -> Bool
}

public struct SaveToWatchListUseCaseRequestValue {
Expand All @@ -26,12 +21,11 @@ final class DefaultSaveToWatchListUseCase: SaveToWatchListUseCase {
self.accountShowsRepository = accountShowsRepository
}

public func execute(requestValue: SaveToWatchListUseCaseRequestValue) -> AnyPublisher<Bool, DataTransferError> {
return accountShowsRepository.saveToWatchList(
tvShowId: requestValue.showId,
watchedList: requestValue.watchList
public func execute(request: SaveToWatchListUseCaseRequestValue) async throws -> Bool {
_ = try await accountShowsRepository.saveToWatchList(
tvShowId: request.showId,
watchedList: request.watchList
)
.map { _ in requestValue.watchList }
.eraseToAnyPublisher()
return request.watchList
}
}

0 comments on commit 228bc77

Please sign in to comment.