diff --git a/app/build.gradle.kts b/app/build.gradle.kts index af388a3..9b3c2f9 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,14 +4,12 @@ import com.google.protobuf.gradle.builtins import com.google.protobuf.gradle.generateProtoTasks import com.google.protobuf.gradle.protobuf import com.google.protobuf.gradle.protoc -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.io.FileInputStream import java.util.* plugins { - id("kotlin-android") + id("gq.kirmanak.mealient.application") id("kotlin-kapt") - id("com.android.application") id("androidx.navigation.safeargs.kotlin") id("dagger.hilt.android.plugin") id("org.jetbrains.kotlin.plugin.serialization") @@ -19,23 +17,14 @@ plugins { id("com.google.firebase.crashlytics") alias(libs.plugins.appsweep) alias(libs.plugins.protobuf) - alias(libs.plugins.ksp) } android { - compileSdk = libs.versions.compileSdk.get().toInt() - defaultConfig { applicationId = "gq.kirmanak.mealient" - minSdk = libs.versions.minSdk.get().toInt() - targetSdk = libs.versions.targetSdk.get().toInt() versionCode = 13 versionName = "0.2.4" - ksp { - arg("room.schemaLocation", "$projectDir/schemas") - } - buildConfigField("Boolean", "LOG_NETWORK", "false") } @@ -73,64 +62,16 @@ android { } } - buildFeatures { - viewBinding = true - } - - testOptions { - unitTests { - isIncludeAndroidResources = true - } - } - - lint { - disable += listOf("ObsoleteLintCustomCheck", "IconMissingDensityFolder") - enable += listOf( - "ConvertToWebp", - "DuplicateStrings", - "EasterEgg", - "ExpensiveAssertion", - "IconExpectedSize", - "ImplicitSamInstance", - "InvalidPackage", - "KotlinPropertyAccess", - "LambdaLast", - "MinSdkTooLow", - "NegativeMargin", - "NoHardKeywords", - "Registered", - "RequiredSize", - "UnknownNullness", - "WrongThreadInterprocedural" - ) - } - namespace = "gq.kirmanak.mealient" packagingOptions { resources.excludes += "DebugProbesKt.bin" } - - compileOptions { - isCoreLibraryDesugaringEnabled = true - } -} - -tasks.withType().configureEach { - configure { - isIncludeNoLocationClasses = true - excludes = listOf("jdk.internal.*") - } -} - -tasks.withType { - kotlinOptions { - freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") - } } dependencies { - coreLibraryDesugaring(libs.android.tools.desugar) + + implementation(project(":database")) implementation(libs.android.material.material) @@ -169,11 +110,6 @@ dependencies { implementation(libs.androidx.paging.runtimeKtx) testImplementation(libs.androidx.paging.commonKtx) - implementation(libs.androidx.room.runtime) - implementation(libs.androidx.room.ktx) - implementation(libs.androidx.room.paging) - ksp(libs.androidx.room.compiler) - testImplementation(libs.androidx.room.testing) implementation(libs.jetbrains.kotlinx.datetime) diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/RecipeRepo.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/RecipeRepo.kt index 56f3086..503a7b2 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/RecipeRepo.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/RecipeRepo.kt @@ -1,8 +1,8 @@ package gq.kirmanak.mealient.data.recipes import androidx.paging.Pager -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity -import gq.kirmanak.mealient.data.recipes.impl.FullRecipeInfo +import gq.kirmanak.mealient.database.recipe.entity.FullRecipeInfo +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity interface RecipeRepo { fun createPager(): Pager diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorage.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorage.kt index 16928e1..382d5a5 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorage.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorage.kt @@ -1,10 +1,10 @@ package gq.kirmanak.mealient.data.recipes.db import androidx.paging.PagingSource -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity -import gq.kirmanak.mealient.data.recipes.impl.FullRecipeInfo import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeResponse import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeSummaryResponse +import gq.kirmanak.mealient.database.recipe.entity.FullRecipeInfo +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity interface RecipeStorage { suspend fun saveRecipes(recipes: List) diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImpl.kt index 3039b99..ab6886e 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImpl.kt @@ -2,11 +2,11 @@ package gq.kirmanak.mealient.data.recipes.db import androidx.paging.PagingSource import androidx.room.withTransaction -import gq.kirmanak.mealient.data.AppDb -import gq.kirmanak.mealient.data.recipes.db.entity.* -import gq.kirmanak.mealient.data.recipes.impl.FullRecipeInfo import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeResponse import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeSummaryResponse +import gq.kirmanak.mealient.database.AppDb +import gq.kirmanak.mealient.database.recipe.RecipeDao +import gq.kirmanak.mealient.database.recipe.entity.* import gq.kirmanak.mealient.extensions.recipeEntity import gq.kirmanak.mealient.extensions.toRecipeEntity import gq.kirmanak.mealient.extensions.toRecipeIngredientEntity diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt index d0a199e..99c43d9 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt @@ -6,8 +6,9 @@ import androidx.paging.Pager import androidx.paging.PagingConfig import gq.kirmanak.mealient.data.recipes.RecipeRepo import gq.kirmanak.mealient.data.recipes.db.RecipeStorage -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity import gq.kirmanak.mealient.data.recipes.network.RecipeDataSource +import gq.kirmanak.mealient.database.recipe.entity.FullRecipeInfo +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.extensions.runCatchingExceptCancel import timber.log.Timber import javax.inject.Inject diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediator.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediator.kt index a194206..324ea30 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediator.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediator.kt @@ -5,8 +5,8 @@ import androidx.paging.* import androidx.paging.LoadType.PREPEND import androidx.paging.LoadType.REFRESH import gq.kirmanak.mealient.data.recipes.db.RecipeStorage -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity import gq.kirmanak.mealient.data.recipes.network.RecipeDataSource +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.extensions.runCatchingExceptCancel import timber.log.Timber import javax.inject.Inject diff --git a/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt index 43b19a5..8b3a7f7 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt @@ -5,14 +5,12 @@ import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.PreferenceDataStoreFactory import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.preferencesDataStoreFile -import androidx.room.Room import dagger.Binds import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent -import gq.kirmanak.mealient.data.AppDb import gq.kirmanak.mealient.data.storage.PreferencesStorage import gq.kirmanak.mealient.data.storage.PreferencesStorageImpl import javax.inject.Singleton @@ -22,11 +20,6 @@ import javax.inject.Singleton interface AppModule { companion object { - @Provides - @Singleton - fun createDb(@ApplicationContext context: Context): AppDb = - Room.databaseBuilder(context, AppDb::class.java, "app.db").build() - @Provides @Singleton fun provideDataStore(@ApplicationContext context: Context): DataStore = diff --git a/app/src/main/java/gq/kirmanak/mealient/di/GlideModuleEntryPoint.kt b/app/src/main/java/gq/kirmanak/mealient/di/GlideModuleEntryPoint.kt index b135470..9558359 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/GlideModuleEntryPoint.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/GlideModuleEntryPoint.kt @@ -4,7 +4,7 @@ import com.bumptech.glide.load.model.ModelLoaderFactory import dagger.hilt.EntryPoint import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import okhttp3.OkHttpClient import java.io.InputStream import javax.inject.Named diff --git a/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt index fc015b5..8317f15 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt @@ -16,13 +16,13 @@ import gq.kirmanak.mealient.data.network.createServiceFactory import gq.kirmanak.mealient.data.recipes.RecipeRepo import gq.kirmanak.mealient.data.recipes.db.RecipeStorage import gq.kirmanak.mealient.data.recipes.db.RecipeStorageImpl -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity import gq.kirmanak.mealient.data.recipes.impl.RecipeImageUrlProvider import gq.kirmanak.mealient.data.recipes.impl.RecipeImageUrlProviderImpl import gq.kirmanak.mealient.data.recipes.impl.RecipeRepoImpl import gq.kirmanak.mealient.data.recipes.network.RecipeDataSource import gq.kirmanak.mealient.data.recipes.network.RecipeDataSourceImpl import gq.kirmanak.mealient.data.recipes.network.RecipeService +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.ui.recipes.images.RecipeModelLoaderFactory import kotlinx.serialization.json.Json import okhttp3.OkHttpClient diff --git a/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt b/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt index 7686ddc..0dc2220 100644 --- a/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt +++ b/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt @@ -2,14 +2,14 @@ package gq.kirmanak.mealient.extensions import gq.kirmanak.mealient.data.baseurl.VersionInfo import gq.kirmanak.mealient.data.baseurl.impl.VersionResponse -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeEntity -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeIngredientEntity -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeInstructionEntity -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeIngredientResponse import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeInstructionResponse import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeResponse import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeSummaryResponse +import gq.kirmanak.mealient.database.recipe.entity.RecipeEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeIngredientEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeInstructionEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity fun GetRecipeResponse.toRecipeEntity() = RecipeEntity( remoteId = remoteId, diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/MealieGlideModule.kt b/app/src/main/java/gq/kirmanak/mealient/ui/MealieGlideModule.kt index 93a040f..022cf9d 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/MealieGlideModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/MealieGlideModule.kt @@ -8,7 +8,7 @@ import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader import com.bumptech.glide.load.model.GlideUrl import com.bumptech.glide.module.AppGlideModule import dagger.hilt.android.EntryPointAccessors.fromApplication -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.di.GlideModuleEntryPoint import timber.log.Timber import java.io.InputStream diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipeViewHolder.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipeViewHolder.kt index f55c9fd..f64ac60 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipeViewHolder.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipeViewHolder.kt @@ -2,7 +2,7 @@ package gq.kirmanak.mealient.ui.recipes import androidx.recyclerview.widget.RecyclerView import gq.kirmanak.mealient.R -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.databinding.ViewHolderRecipeBinding import gq.kirmanak.mealient.ui.recipes.images.RecipeImageLoader import timber.log.Timber diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesFragment.kt index 990c6fb..2bf424a 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesFragment.kt @@ -9,7 +9,7 @@ import androidx.navigation.fragment.findNavController import by.kirich1409.viewbindingdelegate.viewBinding import dagger.hilt.android.AndroidEntryPoint import gq.kirmanak.mealient.R -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.databinding.FragmentRecipesBinding import gq.kirmanak.mealient.extensions.collectWhenViewResumed import gq.kirmanak.mealient.extensions.refreshRequestFlow diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesPagingAdapter.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesPagingAdapter.kt index a1d5ec0..002db21 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesPagingAdapter.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesPagingAdapter.kt @@ -4,7 +4,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.databinding.ViewHolderRecipeBinding import gq.kirmanak.mealient.ui.recipes.images.RecipeImageLoader import timber.log.Timber diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeImageLoader.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeImageLoader.kt index ea06a04..f338454 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeImageLoader.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeImageLoader.kt @@ -1,7 +1,7 @@ package gq.kirmanak.mealient.ui.recipes.images import android.widget.ImageView -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity interface RecipeImageLoader { diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeImageLoaderImpl.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeImageLoaderImpl.kt index 1cedd13..f0e2692 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeImageLoaderImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeImageLoaderImpl.kt @@ -5,7 +5,7 @@ import androidx.fragment.app.Fragment import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import dagger.hilt.android.scopes.FragmentScoped -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import timber.log.Timber import javax.inject.Inject diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoader.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoader.kt index 267d4f1..11b8306 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoader.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoader.kt @@ -5,8 +5,8 @@ import com.bumptech.glide.load.model.GlideUrl import com.bumptech.glide.load.model.ModelCache import com.bumptech.glide.load.model.ModelLoader import com.bumptech.glide.load.model.stream.BaseGlideUrlLoader -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity import gq.kirmanak.mealient.data.recipes.impl.RecipeImageUrlProvider +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import kotlinx.coroutines.runBlocking import timber.log.Timber import java.io.InputStream diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoaderFactory.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoaderFactory.kt index 59ee91f..2dcee04 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoaderFactory.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoaderFactory.kt @@ -1,8 +1,8 @@ package gq.kirmanak.mealient.ui.recipes.images import com.bumptech.glide.load.model.* -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity import gq.kirmanak.mealient.data.recipes.impl.RecipeImageUrlProvider +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import timber.log.Timber import java.io.InputStream import javax.inject.Inject diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloadModelProvider.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloadModelProvider.kt index 577e988..5bd7411 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloadModelProvider.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloadModelProvider.kt @@ -7,7 +7,7 @@ import com.bumptech.glide.ListPreloader import com.bumptech.glide.RequestBuilder import com.bumptech.glide.request.RequestOptions import dagger.hilt.android.scopes.FragmentScoped -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import timber.log.Timber import javax.inject.Inject diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloaderFactory.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloaderFactory.kt index 0455fe5..9e94d3a 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloaderFactory.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloaderFactory.kt @@ -2,7 +2,7 @@ package gq.kirmanak.mealient.ui.recipes.images import androidx.paging.PagingDataAdapter import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity interface RecipePreloaderFactory { diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloaderFactoryImpl.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloaderFactoryImpl.kt index c9c707c..34481a1 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloaderFactoryImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloaderFactoryImpl.kt @@ -5,7 +5,7 @@ import androidx.paging.PagingDataAdapter import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader import com.bumptech.glide.util.ViewPreloadSizeProvider import dagger.hilt.android.scopes.FragmentScoped -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import javax.inject.Inject @FragmentScoped diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoUiState.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoUiState.kt index e6358df..4d1fff5 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoUiState.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoUiState.kt @@ -1,6 +1,6 @@ package gq.kirmanak.mealient.ui.recipes.info -import gq.kirmanak.mealient.data.recipes.impl.FullRecipeInfo +import gq.kirmanak.mealient.database.recipe.entity.FullRecipeInfo data class RecipeInfoUiState( val areIngredientsVisible: Boolean = false, diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeIngredientsAdapter.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeIngredientsAdapter.kt index 1d6215f..b3d3a8f 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeIngredientsAdapter.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeIngredientsAdapter.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeIngredientEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeIngredientEntity import gq.kirmanak.mealient.databinding.ViewHolderIngredientBinding import gq.kirmanak.mealient.ui.recipes.info.RecipeIngredientsAdapter.RecipeIngredientViewHolder import timber.log.Timber diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInstructionsAdapter.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInstructionsAdapter.kt index b84cd1b..de6d995 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInstructionsAdapter.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInstructionsAdapter.kt @@ -6,7 +6,7 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import gq.kirmanak.mealient.R -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeInstructionEntity +import gq.kirmanak.mealient.database.recipe.entity.RecipeInstructionEntity import gq.kirmanak.mealient.databinding.ViewHolderInstructionBinding import gq.kirmanak.mealient.ui.recipes.info.RecipeInstructionsAdapter.RecipeInstructionViewHolder import timber.log.Timber diff --git a/app/src/test/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImplTest.kt index 0ca38fe..f3c18ab 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImplTest.kt @@ -2,11 +2,11 @@ package gq.kirmanak.mealient.data.recipes.db import com.google.common.truth.Truth.assertThat import dagger.hilt.android.testing.HiltAndroidTest -import gq.kirmanak.mealient.data.AppDb -import gq.kirmanak.mealient.data.recipes.db.entity.CategoryEntity -import gq.kirmanak.mealient.data.recipes.db.entity.CategoryRecipeEntity -import gq.kirmanak.mealient.data.recipes.db.entity.TagEntity -import gq.kirmanak.mealient.data.recipes.db.entity.TagRecipeEntity +import gq.kirmanak.mealient.database.AppDb +import gq.kirmanak.mealient.database.recipe.entity.CategoryEntity +import gq.kirmanak.mealient.database.recipe.entity.CategoryRecipeEntity +import gq.kirmanak.mealient.database.recipe.entity.TagEntity +import gq.kirmanak.mealient.database.recipe.entity.TagRecipeEntity import gq.kirmanak.mealient.test.HiltRobolectricTest import gq.kirmanak.mealient.test.RecipeImplTestData.BREAD_INGREDIENT import gq.kirmanak.mealient.test.RecipeImplTestData.CAKE_BREAD_RECIPE_INGREDIENT_ENTITY diff --git a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImplTest.kt index d982668..604f9a1 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImplTest.kt @@ -4,8 +4,8 @@ import androidx.paging.InvalidatingPagingSourceFactory import com.google.common.truth.Truth.assertThat import gq.kirmanak.mealient.data.recipes.RecipeRepo import gq.kirmanak.mealient.data.recipes.db.RecipeStorage -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity import gq.kirmanak.mealient.data.recipes.network.RecipeDataSource +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.test.RecipeImplTestData.FULL_CAKE_INFO_ENTITY import gq.kirmanak.mealient.test.RecipeImplTestData.GET_CAKE_RESPONSE import io.mockk.MockKAnnotations diff --git a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediatorTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediatorTest.kt index b470eb6..0f3c322 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediatorTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediatorTest.kt @@ -5,8 +5,8 @@ import androidx.paging.LoadType.* import com.google.common.truth.Truth.assertThat import gq.kirmanak.mealient.data.network.NetworkError.Unauthorized import gq.kirmanak.mealient.data.recipes.db.RecipeStorage -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity import gq.kirmanak.mealient.data.recipes.network.RecipeDataSource +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.test.RecipeImplTestData.TEST_RECIPE_SUMMARIES import io.mockk.MockKAnnotations import io.mockk.coEvery diff --git a/app/src/test/java/gq/kirmanak/mealient/test/RecipeImplTestData.kt b/app/src/test/java/gq/kirmanak/mealient/test/RecipeImplTestData.kt index 487cb8a..2b9578c 100644 --- a/app/src/test/java/gq/kirmanak/mealient/test/RecipeImplTestData.kt +++ b/app/src/test/java/gq/kirmanak/mealient/test/RecipeImplTestData.kt @@ -1,14 +1,10 @@ package gq.kirmanak.mealient.test -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeEntity -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeIngredientEntity -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeInstructionEntity -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity -import gq.kirmanak.mealient.data.recipes.impl.FullRecipeInfo import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeIngredientResponse import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeInstructionResponse import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeResponse import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeSummaryResponse +import gq.kirmanak.mealient.database.recipe.entity.* import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDateTime diff --git a/buildSrc/.gitignore b/build-logic/convention/.gitignore similarity index 87% rename from buildSrc/.gitignore rename to build-logic/convention/.gitignore index 796b96d..a774788 100644 --- a/buildSrc/.gitignore +++ b/build-logic/convention/.gitignore @@ -1 +1,2 @@ /build + diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts new file mode 100644 index 0000000..96d504c --- /dev/null +++ b/build-logic/convention/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + `kotlin-dsl` +} + +group = "gq.kirmanak.mealient.buildlogic" + +dependencies { + implementation(libs.jetbrains.kotlinPlugin) + implementation(libs.android.gradlePlugin) +} + +gradlePlugin { + plugins { + register("androidApplication") { + id = "gq.kirmanak.mealient.application" + implementationClass = "AndroidApplicationConventionPlugin" + } + register("androidLibrary") { + id = "gq.kirmanak.mealient.library" + implementationClass = "AndroidLibraryConventionPlugin" + } + } +} diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt new file mode 100644 index 0000000..4aee756 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt @@ -0,0 +1,23 @@ +import com.android.build.gradle.internal.dsl.BaseAppModuleExtension +import gq.kirmanak.mealient.Versions +import gq.kirmanak.mealient.configureKotlinAndroid +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure + +class AndroidApplicationConventionPlugin : Plugin { + + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.application") + apply("org.jetbrains.kotlin.android") + } + + extensions.configure { + configureKotlinAndroid(this) + defaultConfig.targetSdk = Versions.TARGET_SDK_VERSION + } + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt new file mode 100644 index 0000000..520bf85 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -0,0 +1,22 @@ +import com.android.build.gradle.LibraryExtension +import gq.kirmanak.mealient.Versions +import gq.kirmanak.mealient.configureKotlinAndroid +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure + +class AndroidLibraryConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.library") + apply("org.jetbrains.kotlin.android") + } + + extensions.configure { + configureKotlinAndroid(this) + defaultConfig.targetSdk = Versions.TARGET_SDK_VERSION + } + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/gq/kirmanak/mealient/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/gq/kirmanak/mealient/KotlinAndroid.kt new file mode 100644 index 0000000..7d1ba41 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/gq/kirmanak/mealient/KotlinAndroid.kt @@ -0,0 +1,80 @@ +@file:Suppress("UnstableApiUsage") + +package gq.kirmanak.mealient + +import com.android.build.api.dsl.CommonExtension +import org.gradle.api.Project +import org.gradle.api.plugins.ExtensionAware +import org.gradle.api.tasks.testing.Test +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.withType +import org.gradle.testing.jacoco.plugins.JacocoTaskExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions + +internal fun Project.configureKotlinAndroid( + commonExtension: CommonExtension<*, *, *, *>, +) { + commonExtension.apply { + compileSdk = Versions.COMPILE_SDK_VERSION + + defaultConfig { + minSdk = Versions.MIN_SDK_VERSION + } + + compileOptions { + isCoreLibraryDesugaringEnabled = true + } + + kotlinOptions { + freeCompilerArgs = freeCompilerArgs + listOf("-opt-in=kotlin.RequiresOptIn") + } + + lint { + disable += listOf("ObsoleteLintCustomCheck", "IconMissingDensityFolder") + enable += listOf( + "ConvertToWebp", + "DuplicateStrings", + "EasterEgg", + "ExpensiveAssertion", + "IconExpectedSize", + "ImplicitSamInstance", + "InvalidPackage", + "KotlinPropertyAccess", + "LambdaLast", + "MinSdkTooLow", + "NegativeMargin", + "NoHardKeywords", + "Registered", + "RequiredSize", + "UnknownNullness", + "WrongThreadInterprocedural" + ) + } + + buildFeatures { + viewBinding = true + } + + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } + + dependencies { + add("coreLibraryDesugaring", libs.findLibrary("android-tools-desugar").get()) + } + } + + tasks.withType().configureEach { + configure { + isIncludeNoLocationClasses = true + excludes = listOf("jdk.internal.*") + } + } +} + +fun CommonExtension<*, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { + (this as ExtensionAware).extensions.configure("kotlinOptions", block) +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/gq/kirmanak/mealient/Versions.kt b/build-logic/convention/src/main/kotlin/gq/kirmanak/mealient/Versions.kt new file mode 100644 index 0000000..8750165 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/gq/kirmanak/mealient/Versions.kt @@ -0,0 +1,15 @@ +package gq.kirmanak.mealient + +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.getByType + +object Versions { + const val MIN_SDK_VERSION = 23 + const val TARGET_SDK_VERSION = 32 + const val COMPILE_SDK_VERSION = 32 +} + +val Project.libs: VersionCatalog + get() = extensions.getByType().named("libs") diff --git a/build-logic/gradle.properties b/build-logic/gradle.properties new file mode 100644 index 0000000..1c9073e --- /dev/null +++ b/build-logic/gradle.properties @@ -0,0 +1,4 @@ +# Gradle properties are not passed to included builds https://github.com/gradle/gradle/issues/2534 +org.gradle.parallel=true +org.gradle.caching=true +org.gradle.configureondemand=true diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 0000000..c230f78 --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1,15 @@ +@file:Suppress("UnstableApiUsage") + +dependencyResolutionManagement { + repositories { + google() + mavenCentral() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +include(":convention") diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index f155244..0000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -repositories { - mavenCentral() -} - -plugins { - `kotlin-dsl` -} \ No newline at end of file diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/database/build.gradle.kts b/database/build.gradle.kts new file mode 100644 index 0000000..afb1731 --- /dev/null +++ b/database/build.gradle.kts @@ -0,0 +1,43 @@ +plugins { + id("gq.kirmanak.mealient.library") + id("kotlin-kapt") + id("dagger.hilt.android.plugin") + alias(libs.plugins.ksp) +} + +android { + defaultConfig { + ksp { + arg("room.schemaLocation", "$projectDir/schemas") + } + } + + namespace = "gq.kirmanak.mealient.database" +} + +dependencies { + implementation(libs.google.dagger.hiltAndroid) + kapt(libs.google.dagger.hiltCompiler) + kaptTest(libs.google.dagger.hiltAndroidCompiler) + testImplementation(libs.google.dagger.hiltAndroidTesting) + + // withTransaction is used in the app module + api(libs.androidx.room.ktx) + + implementation(libs.androidx.room.runtime) + implementation(libs.androidx.room.paging) + ksp(libs.androidx.room.compiler) + testImplementation(libs.androidx.room.testing) + + implementation(libs.jetbrains.kotlinx.datetime) + + implementation(libs.jetbrains.kotlinx.coroutinesAndroid) + testImplementation(libs.jetbrains.kotlinx.coroutinesTest) + + testImplementation(libs.androidx.test.junit) + + testImplementation(libs.google.truth) + + testImplementation(libs.io.mockk) + +} \ No newline at end of file diff --git a/app/schemas/gq.kirmanak.mealient.data.AppDb/1.json b/database/schemas/gq.kirmanak.mealient.database.AppDb/1.json similarity index 100% rename from app/schemas/gq.kirmanak.mealient.data.AppDb/1.json rename to database/schemas/gq.kirmanak.mealient.database.AppDb/1.json diff --git a/app/schemas/gq.kirmanak.mealient.data.AppDb/2.json b/database/schemas/gq.kirmanak.mealient.database.AppDb/2.json similarity index 100% rename from app/schemas/gq.kirmanak.mealient.data.AppDb/2.json rename to database/schemas/gq.kirmanak.mealient.database.AppDb/2.json diff --git a/database/src/main/AndroidManifest.xml b/database/src/main/AndroidManifest.xml new file mode 100644 index 0000000..227314e --- /dev/null +++ b/database/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/data/AppDb.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/AppDb.kt similarity index 77% rename from app/src/main/java/gq/kirmanak/mealient/data/AppDb.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/AppDb.kt index eae931b..3f30751 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/AppDb.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/AppDb.kt @@ -1,12 +1,11 @@ -package gq.kirmanak.mealient.data +package gq.kirmanak.mealient.database import androidx.room.AutoMigration import androidx.room.Database import androidx.room.RoomDatabase import androidx.room.TypeConverters -import gq.kirmanak.mealient.data.recipes.db.RecipeDao -import gq.kirmanak.mealient.data.recipes.db.entity.* -import gq.kirmanak.mealient.extensions.RoomTypeConverters +import gq.kirmanak.mealient.database.recipe.RecipeDao +import gq.kirmanak.mealient.database.recipe.entity.* @Database( version = 2, diff --git a/database/src/main/kotlin/gq/kirmanak/mealient/database/DatabaseModule.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/DatabaseModule.kt new file mode 100644 index 0000000..9fa9d7a --- /dev/null +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/DatabaseModule.kt @@ -0,0 +1,22 @@ +package gq.kirmanak.mealient.database + +import android.content.Context +import androidx.room.Room +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +interface DatabaseModule { + + companion object { + @Provides + @Singleton + fun createDb(@ApplicationContext context: Context): AppDb = + Room.databaseBuilder(context, AppDb::class.java, "app.db").build() + } +} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/extensions/RoomTypeConverters.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/RoomTypeConverters.kt similarity index 94% rename from app/src/main/java/gq/kirmanak/mealient/extensions/RoomTypeConverters.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/RoomTypeConverters.kt index abfcfbb..2f5a29e 100644 --- a/app/src/main/java/gq/kirmanak/mealient/extensions/RoomTypeConverters.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/RoomTypeConverters.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.extensions +package gq.kirmanak.mealient.database import androidx.room.TypeConverter import kotlinx.datetime.* diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeDao.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/RecipeDao.kt similarity index 94% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeDao.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/RecipeDao.kt index 67ac3f4..203953a 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeDao.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/RecipeDao.kt @@ -1,9 +1,8 @@ -package gq.kirmanak.mealient.data.recipes.db +package gq.kirmanak.mealient.database.recipe import androidx.paging.PagingSource import androidx.room.* -import gq.kirmanak.mealient.data.recipes.db.entity.* -import gq.kirmanak.mealient.data.recipes.impl.FullRecipeInfo +import gq.kirmanak.mealient.database.recipe.entity.* @Dao interface RecipeDao { diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/CategoryEntity.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/CategoryEntity.kt similarity index 87% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/CategoryEntity.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/CategoryEntity.kt index fc40158..4384ded 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/CategoryEntity.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/CategoryEntity.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.recipes.db.entity +package gq.kirmanak.mealient.database.recipe.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/CategoryRecipeEntity.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/CategoryRecipeEntity.kt similarity index 94% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/CategoryRecipeEntity.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/CategoryRecipeEntity.kt index 9c6ed30..d0fca2d 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/CategoryRecipeEntity.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/CategoryRecipeEntity.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.recipes.db.entity +package gq.kirmanak.mealient.database.recipe.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/FullRecipeInfo.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/FullRecipeInfo.kt similarity index 63% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/FullRecipeInfo.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/FullRecipeInfo.kt index 7b5a86f..27b02cc 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/FullRecipeInfo.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/FullRecipeInfo.kt @@ -1,11 +1,7 @@ -package gq.kirmanak.mealient.data.recipes.impl +package gq.kirmanak.mealient.database.recipe.entity import androidx.room.Embedded import androidx.room.Relation -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeEntity -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeIngredientEntity -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeInstructionEntity -import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity data class FullRecipeInfo( @Embedded val recipeEntity: RecipeEntity, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeEntity.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeEntity.kt similarity index 84% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeEntity.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeEntity.kt index 025afcf..9db36b9 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeEntity.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeEntity.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.recipes.db.entity +package gq.kirmanak.mealient.database.recipe.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeIngredientEntity.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeIngredientEntity.kt similarity index 92% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeIngredientEntity.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeIngredientEntity.kt index 86f75e1..e539674 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeIngredientEntity.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeIngredientEntity.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.recipes.db.entity +package gq.kirmanak.mealient.database.recipe.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeInstructionEntity.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeInstructionEntity.kt similarity index 89% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeInstructionEntity.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeInstructionEntity.kt index d4f9dfb..8cbb8d6 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeInstructionEntity.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeInstructionEntity.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.recipes.db.entity +package gq.kirmanak.mealient.database.recipe.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeSummaryEntity.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeSummaryEntity.kt similarity index 94% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeSummaryEntity.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeSummaryEntity.kt index 287a4af..dfb3cce 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/RecipeSummaryEntity.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/RecipeSummaryEntity.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.recipes.db.entity +package gq.kirmanak.mealient.database.recipe.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/TagEntity.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/TagEntity.kt similarity index 87% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/TagEntity.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/TagEntity.kt index 29207a8..460c649 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/TagEntity.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/TagEntity.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.recipes.db.entity +package gq.kirmanak.mealient.database.recipe.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/TagRecipeEntity.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/TagRecipeEntity.kt similarity index 93% rename from app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/TagRecipeEntity.kt rename to database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/TagRecipeEntity.kt index 04743c8..332a5b1 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/entity/TagRecipeEntity.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/entity/TagRecipeEntity.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.recipes.db.entity +package gq.kirmanak.mealient.database.recipe.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/test/java/gq/kirmanak/mealient/extensions/RoomTypeConvertersTest.kt b/database/src/test/kotlin/gq/kirmanak/mealient/database/RoomTypeConvertersTest.kt similarity index 96% rename from app/src/test/java/gq/kirmanak/mealient/extensions/RoomTypeConvertersTest.kt rename to database/src/test/kotlin/gq/kirmanak/mealient/database/RoomTypeConvertersTest.kt index 240d593..4e621b0 100644 --- a/app/src/test/java/gq/kirmanak/mealient/extensions/RoomTypeConvertersTest.kt +++ b/database/src/test/kotlin/gq/kirmanak/mealient/database/RoomTypeConvertersTest.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.extensions +package gq.kirmanak.mealient.database import com.google.common.truth.Truth.assertThat import kotlinx.datetime.LocalDate diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 575762d..c723c46 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,4 @@ [versions] -compileSdk = "32" -minSdk = "23" -targetSdk = "32" - # https://maven.google.com/web/index.html?q=com.android.tools.build#com.android.tools.build:gradle androidGradlePlugin = "7.2.1" # https://developers.google.com/android/guides/google-services-plugin diff --git a/settings.gradle.kts b/settings.gradle.kts index b8588e0..4145c27 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,5 +1,14 @@ @file:Suppress("UnstableApiUsage") +pluginManagement { + includeBuild("build-logic") + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { @@ -7,5 +16,8 @@ dependencyResolutionManagement { mavenCentral() } } + rootProject.name = "Mealient" + include(":app") +include(":database")