From 56d47d1f327508600079a97fc15efb0e8f071e69 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sun, 13 Nov 2022 13:13:59 +0530 Subject: [PATCH] refactor(di): move database injection to its module --- .../claw/android/injection/DatabaseModule.kt | 26 ---------------- database/build.gradle.kts | 6 ++++ .../claw/database/injection/DatabaseModule.kt | 31 +++++++++++++++++++ 3 files changed, 37 insertions(+), 26 deletions(-) delete mode 100644 android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt create mode 100644 database/src/main/kotlin/dev/msfjarvis/claw/database/injection/DatabaseModule.kt diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt deleted file mode 100644 index 615244a9..00000000 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright © 2021-2022 Harsh Shandilya. - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - */ -package dev.msfjarvis.claw.android.injection - -import android.content.Context -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.android.qualifiers.ApplicationContext -import dagger.hilt.components.SingletonComponent -import dev.msfjarvis.claw.database.LobstersDatabase -import dev.msfjarvis.claw.database.local.createDatabase - -@Module -@InstallIn(SingletonComponent::class) -object DatabaseModule { - - @Provides - fun provideDatabase(@ApplicationContext context: Context): LobstersDatabase { - return createDatabase(context) - } -} diff --git a/database/build.gradle.kts b/database/build.gradle.kts index aa47a7ef..48ed8947 100644 --- a/database/build.gradle.kts +++ b/database/build.gradle.kts @@ -11,8 +11,11 @@ plugins { alias(libs.plugins.sqldelight) id("dev.msfjarvis.claw.kotlin-common") id("dev.msfjarvis.claw.android-library") + alias(libs.plugins.anvil) } +anvil { generateDaggerFactories.set(true) } + android { namespace = "dev.msfjarvis.claw.database" } sqldelight { @@ -25,6 +28,9 @@ sqldelight { } dependencies { + implementation(libs.dagger) + implementation(projects.core) + implementation(projects.diScopes) implementation(libs.sqldelight.androidDriver) implementation(libs.sqldelight.primitiveAdapters) testImplementation(libs.sqldelight.jvmDriver) diff --git a/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/DatabaseModule.kt b/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/DatabaseModule.kt new file mode 100644 index 00000000..4d692741 --- /dev/null +++ b/database/src/main/kotlin/dev/msfjarvis/claw/database/injection/DatabaseModule.kt @@ -0,0 +1,31 @@ +/* + * Copyright © 2021-2022 Harsh Shandilya. + * Use of this source code is governed by an MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT. + */ +package dev.msfjarvis.claw.database.injection + +import android.content.Context +import app.cash.sqldelight.adapter.primitive.IntColumnAdapter +import app.cash.sqldelight.driver.android.AndroidSqliteDriver +import com.squareup.anvil.annotations.ContributesTo +import dagger.Module +import dagger.Provides +import dev.msfjarvis.claw.database.LobstersDatabase +import dev.msfjarvis.claw.database.local.SavedPost +import dev.msfjarvis.claw.database.model.TagsAdapter +import dev.msfjarvis.claw.injection.scopes.AppScope + +@Module +@ContributesTo(AppScope::class) +object DatabaseModule { + + private const val LOBSTERS_DATABASE_NAME = "SavedPosts.db" + + @Provides + fun provideDatabase(context: Context): LobstersDatabase { + val driver = AndroidSqliteDriver(LobstersDatabase.Schema, context, LOBSTERS_DATABASE_NAME) + return LobstersDatabase(driver, SavedPost.Adapter(IntColumnAdapter, TagsAdapter())) + } +}