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 - Module #119

Merged
merged 5 commits into from
Mar 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies {

implementation(projects.data)
implementation(projects.core)
implementation(projects.domain)
implementation(projects.featureWishlist)
implementation(projects.featureMovies)
implementation(projects.featureDetails)
Expand Down
2 changes: 2 additions & 0 deletions src/app/src/main/java/com/gabrielbmoro/moviedb/MovieDBApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.app.Application
import com.gabrielbmoro.moviedb.core.di.coreModule
import com.gabrielbmoro.moviedb.details.di.featureDetailsModule
import com.gabrielbmoro.moviedb.di.appModule
import com.gabrielbmoro.moviedb.domain.di.domainModule
import com.gabrielbmoro.moviedb.movies.di.featureMoviesModule
import com.gabrielbmoro.moviedb.repository.di.dataModule
import com.gabrielbmoro.moviedb.search.di.featureSearchMovieModule
Expand Down Expand Up @@ -33,6 +34,7 @@ class MovieDBApp : Application() {
modules(
appModule,
coreModule,
domainModule,
dataModule,
featureDetailsModule,
featureMoviesModule,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import androidx.navigation.navArgument
import com.gabrielbmoro.moviedb.core.ui.parcelableOf
import com.gabrielbmoro.moviedb.details.ui.screens.details.DetailsScreen
import com.gabrielbmoro.moviedb.details.ui.screens.details.DetailsScreenViewModel
import com.gabrielbmoro.moviedb.domain.entities.Movie
import com.gabrielbmoro.moviedb.movies.ui.screens.movies.MovieScreen
import com.gabrielbmoro.moviedb.repository.model.Movie
import com.gabrielbmoro.moviedb.search.ui.screens.search.SearchScreen
import com.gabrielbmoro.moviedb.wishlist.ui.screens.wishlist.WishlistScreen
import org.koin.androidx.compose.koinViewModel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.gabrielbmoro.moviedb.navigation
import android.os.Bundle
import androidx.navigation.NavType
import com.gabrielbmoro.moviedb.core.ui.parcelableOf
import com.gabrielbmoro.moviedb.repository.model.Movie
import com.gabrielbmoro.moviedb.domain.entities.Movie
import com.google.gson.Gson

class NavMovieType : NavType<Movie>(false) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.gabrielbmoro.moviedb.navigation
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import com.gabrielbmoro.moviedb.R
import com.gabrielbmoro.moviedb.repository.model.Movie
import com.gabrielbmoro.moviedb.domain.entities.Movie

sealed class NavigationItem(
open val route: String
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.gabrielbmoro.moviedb.navigation

import android.net.Uri
import com.gabrielbmoro.moviedb.repository.model.Movie
import com.gabrielbmoro.moviedb.domain.entities.Movie
import com.google.gson.Gson

object ScreenRoutesBuilder {
Expand Down
3 changes: 3 additions & 0 deletions src/data/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ android {
}

dependencies {

implementation(projects.domain)

implementation(libs.preferences.ktx)
implementation(libs.timber)
implementation(libs.bundles.retrofit)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ package com.gabrielbmoro.moviedb.repository
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingData
import com.gabrielbmoro.moviedb.domain.model.DataOrException
import com.gabrielbmoro.moviedb.domain.MoviesRepository
import com.gabrielbmoro.moviedb.domain.entities.DataOrException
import com.gabrielbmoro.moviedb.domain.entities.Movie
import com.gabrielbmoro.moviedb.domain.entities.MovieDetail
import com.gabrielbmoro.moviedb.domain.entities.VideoStream
import com.gabrielbmoro.moviedb.repository.datasources.paging.MoviesDataSource
import com.gabrielbmoro.moviedb.repository.datasources.retrofit.ApiRepository
import com.gabrielbmoro.moviedb.repository.datasources.room.FavoriteMoviesDAO
Expand All @@ -12,9 +16,6 @@ import com.gabrielbmoro.moviedb.repository.mappers.MovieMapper
import com.gabrielbmoro.moviedb.repository.mappers.PageMapper
import com.gabrielbmoro.moviedb.repository.mappers.VideoDetailsMapper
import com.gabrielbmoro.moviedb.repository.mappers.VideoStreamMapper
import com.gabrielbmoro.moviedb.repository.model.Movie
import com.gabrielbmoro.moviedb.repository.model.MovieDetail
import com.gabrielbmoro.moviedb.repository.model.VideoStream
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.map
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.gabrielbmoro.moviedb.repository.di

import androidx.room.Room
import com.gabrielbmoro.moviedb.repository.MoviesRepository
import com.gabrielbmoro.moviedb.domain.MoviesRepository
import com.gabrielbmoro.moviedb.repository.MoviesRepositoryImpl
import com.gabrielbmoro.moviedb.repository.datasources.retrofit.ApiRepository
import com.gabrielbmoro.moviedb.repository.datasources.retrofit.interceptors.AuthenticationInterceptor
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.gabrielbmoro.moviedb.repository.mappers

import com.gabrielbmoro.moviedb.domain.entities.Movie
import com.gabrielbmoro.moviedb.repository.datasources.room.dto.FavoriteMovieDTO
import com.gabrielbmoro.moviedb.repository.model.Movie

class FavoriteMovieMapper {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.gabrielbmoro.moviedb.repository.mappers

import com.gabrielbmoro.moviedb.domain.entities.Movie
import com.gabrielbmoro.moviedb.repository.datasources.retrofit.responses.MovieResponse
import com.gabrielbmoro.moviedb.repository.datasources.room.dto.FavoriteMovieDTO
import com.gabrielbmoro.moviedb.repository.model.Movie

class MovieMapper {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.gabrielbmoro.moviedb.repository.mappers

import com.gabrielbmoro.moviedb.domain.entities.MovieDetail
import com.gabrielbmoro.moviedb.repository.datasources.retrofit.responses.MovieDetailResponse
import com.gabrielbmoro.moviedb.repository.model.MovieDetail

class VideoDetailsMapper {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.gabrielbmoro.moviedb.repository.mappers

import com.gabrielbmoro.moviedb.domain.entities.VideoStream
import com.gabrielbmoro.moviedb.repository.datasources.retrofit.responses.VideoStreamsResponse
import com.gabrielbmoro.moviedb.repository.model.VideoStream

class VideoStreamMapper {

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gabrielbmoro.moviedb.repository.mappers

import com.gabrielbmoro.moviedb.repository.model.Movie
import com.gabrielbmoro.moviedb.domain.entities.Movie
import com.google.common.truth.Truth
import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Test
Expand Down
1 change: 1 addition & 0 deletions src/domain/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
21 changes: 21 additions & 0 deletions src/domain/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
plugins {
id("android-library-plugin")
alias(libs.plugins.ksp)
alias(libs.plugins.kover)
}

android {
namespace = "com.gabrielbmoro.moviedb.domain"
}

dependencies {
implementation(libs.paging.compose)

// Test
testImplementation(libs.bundles.test)

// Koin
implementation(platform(libs.koin.bom))
implementation(libs.bundles.koin.impl)
}
Empty file added src/domain/consumer-rules.pro
Empty file.
21 changes: 21 additions & 0 deletions src/domain/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
4 changes: 4 additions & 0 deletions src/domain/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

</manifest>
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.gabrielbmoro.moviedb.repository
package com.gabrielbmoro.moviedb.domain

import androidx.paging.PagingData
import com.gabrielbmoro.moviedb.domain.model.DataOrException
import com.gabrielbmoro.moviedb.repository.model.Movie
import com.gabrielbmoro.moviedb.repository.model.MovieDetail
import com.gabrielbmoro.moviedb.repository.model.VideoStream
import com.gabrielbmoro.moviedb.domain.entities.DataOrException
import com.gabrielbmoro.moviedb.domain.entities.Movie
import com.gabrielbmoro.moviedb.domain.entities.MovieDetail
import com.gabrielbmoro.moviedb.domain.entities.VideoStream
import kotlinx.coroutines.flow.Flow

interface MoviesRepository {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package com.gabrielbmoro.moviedb.domain.di

import com.gabrielbmoro.moviedb.domain.usecases.FavoriteMovieUseCase
import com.gabrielbmoro.moviedb.domain.usecases.FavoriteMovieUseCaseImpl
import com.gabrielbmoro.moviedb.domain.usecases.GetFavoriteMoviesUseCase
import com.gabrielbmoro.moviedb.domain.usecases.GetFavoriteMoviesUseCaseImpl
import com.gabrielbmoro.moviedb.domain.usecases.GetMovieDetailsUseCase
import com.gabrielbmoro.moviedb.domain.usecases.GetMovieDetailsUseCaseImpl
import com.gabrielbmoro.moviedb.domain.usecases.GetNowPlayingMoviesUseCase
import com.gabrielbmoro.moviedb.domain.usecases.GetNowPlayingMoviesUseCaseImpl
import com.gabrielbmoro.moviedb.domain.usecases.GetPopularMoviesUseCase
import com.gabrielbmoro.moviedb.domain.usecases.GetPopularMoviesUseCaseImpl
import com.gabrielbmoro.moviedb.domain.usecases.GetTopRatedMoviesUseCase
import com.gabrielbmoro.moviedb.domain.usecases.GetTopRatedMoviesUseCaseImpl
import com.gabrielbmoro.moviedb.domain.usecases.GetTrailersUseCase
import com.gabrielbmoro.moviedb.domain.usecases.GetTrailersUseCaseImpl
import com.gabrielbmoro.moviedb.domain.usecases.GetUpcomingMoviesUseCase
import com.gabrielbmoro.moviedb.domain.usecases.GetUpcomingMoviesUseCaseImpl
import com.gabrielbmoro.moviedb.domain.usecases.IsFavoriteMovieUseCase
import com.gabrielbmoro.moviedb.domain.usecases.IsFavoriteMovieUseCaseImpl
import com.gabrielbmoro.moviedb.domain.usecases.SearchMovieUseCase
import com.gabrielbmoro.moviedb.domain.usecases.SearchMovieUseCaseImpl
import org.koin.dsl.module

val domainModule = module {
factory<FavoriteMovieUseCase> {
FavoriteMovieUseCaseImpl(
repository = get()
)
}

factory<GetFavoriteMoviesUseCase> {
GetFavoriteMoviesUseCaseImpl(
repository = get()
)
}

factory<GetMovieDetailsUseCase> {
GetMovieDetailsUseCaseImpl(
repository = get(),
getTrailersUseCase = get()
)
}

factory<GetNowPlayingMoviesUseCase> {
GetNowPlayingMoviesUseCaseImpl(
repository = get()
)
}

factory<GetPopularMoviesUseCase> {
GetPopularMoviesUseCaseImpl(
repository = get()
)
}

factory<GetTopRatedMoviesUseCase> {
GetTopRatedMoviesUseCaseImpl(
repository = get()
)
}

factory<GetTrailersUseCase> {
GetTrailersUseCaseImpl(
repository = get()
)
}

factory<GetUpcomingMoviesUseCase> {
GetUpcomingMoviesUseCaseImpl(
repository = get()
)
}

factory<IsFavoriteMovieUseCase> {
IsFavoriteMovieUseCaseImpl(
repository = get()
)
}

factory<SearchMovieUseCase> {
SearchMovieUseCaseImpl(
repository = get()
)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gabrielbmoro.moviedb.domain.model
package com.gabrielbmoro.moviedb.domain.entities

data class DataOrException<T, E : Exception>(
val data: T? = null,
val exception: E? = null
)
)
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.gabrielbmoro.moviedb.repository.model
package com.gabrielbmoro.moviedb.domain.entities

import android.os.Parcelable
import kotlinx.parcelize.Parcelize
Expand Down Expand Up @@ -57,4 +57,4 @@ data class Movie(
popularity = 1f
)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.gabrielbmoro.moviedb.repository.model
package com.gabrielbmoro.moviedb.domain.entities

import android.os.Parcelable
import kotlinx.parcelize.Parcelize
Expand All @@ -14,4 +14,4 @@ data class MovieDetail(
val tagline: String,
val productionCompanies: List<String>,
var videoId: String? = null
) : Parcelable
) : Parcelable
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.gabrielbmoro.moviedb.repository.model
package com.gabrielbmoro.moviedb.domain.entities

enum class MovieListType(val value: Int) {
TOP_RATED(TOP_RATED_MOVIES_VALUE),
Expand All @@ -13,5 +13,5 @@ const val POPULAR_MOVIES_VALUE = 3
const val UPCOMING_MOVIES_VALUE = 4

fun Int.convertToMovieListType(): MovieListType? {
return MovieListType.values().firstOrNull { it.value == this }
return MovieListType.entries.firstOrNull { it.value == this }
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.gabrielbmoro.moviedb.repository.model
package com.gabrielbmoro.moviedb.domain.entities

import android.os.Parcelable
import kotlinx.parcelize.Parcelize
Expand Down Expand Up @@ -45,4 +45,4 @@ data class VideoStream(
size = 1024
)
}
}
}
Loading