From e7f4c8a7ebe4e907f65af46e6dddfd3a542415c0 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 2 Aug 2022 22:08:17 +0530 Subject: [PATCH] database: migrate to Android-only --- .../claw/android/injection/DatabaseModule.kt | 10 ++---- database/build.gradle.kts | 33 ++++++------------ .../msfjarvis/claw/database/local/Database.kt | 12 ------- .../msfjarvis/claw/database/local/Database.kt | 17 --------- .../{androidMain => main}/AndroidManifest.xml | 0 .../msfjarvis/claw/database/local/Database.kt | 11 +++--- .../claw/database/model/TagsAdapter.kt | 0 .../dev/msfjarvis/claw/database/local/1.db | Bin .../dev/msfjarvis/claw/database/local/1.sqm | 0 .../dev/msfjarvis/claw/database/local/2.sqm | 0 .../claw/database/local/SavedPost.sq | 0 .../database/local/SqlDelightQueriesTest.kt | 0 settings.gradle.kts | 1 + 13 files changed, 18 insertions(+), 66 deletions(-) delete mode 100644 database/src/androidMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt delete mode 100644 database/src/desktopMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt rename database/src/{androidMain => main}/AndroidManifest.xml (100%) rename database/src/{commonMain => main}/kotlin/dev/msfjarvis/claw/database/local/Database.kt (59%) rename database/src/{commonMain => main}/kotlin/dev/msfjarvis/claw/database/model/TagsAdapter.kt (100%) rename database/src/{commonMain => main}/sqldelight/dev/msfjarvis/claw/database/local/1.db (100%) rename database/src/{commonMain => main}/sqldelight/dev/msfjarvis/claw/database/local/1.sqm (100%) rename database/src/{commonMain => main}/sqldelight/dev/msfjarvis/claw/database/local/2.sqm (100%) rename database/src/{commonMain => main}/sqldelight/dev/msfjarvis/claw/database/local/SavedPost.sq (100%) rename database/src/{desktopTest => test}/kotlin/dev/msfjarvis/claw/database/local/SqlDelightQueriesTest.kt (100%) 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 index 636a4b95..ee7dba84 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt @@ -7,7 +7,6 @@ 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.DriverFactory import dev.msfjarvis.claw.database.local.createDatabase @Module @@ -15,12 +14,7 @@ import dev.msfjarvis.claw.database.local.createDatabase object DatabaseModule { @Provides - fun provideDriverFactory(@ApplicationContext context: Context): DriverFactory { - return DriverFactory(context) - } - - @Provides - fun provideDatabase(factory: DriverFactory): LobstersDatabase { - return createDatabase(factory) + fun provideDatabase(@ApplicationContext context: Context): LobstersDatabase { + return createDatabase(context) } } diff --git a/database/build.gradle.kts b/database/build.gradle.kts index 4005d902..ac098d9f 100644 --- a/database/build.gradle.kts +++ b/database/build.gradle.kts @@ -1,38 +1,27 @@ @file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage") plugins { - kotlin("multiplatform") + kotlin("android") alias(libs.plugins.sqldelight) id("dev.msfjarvis.claw.kotlin-common") id("dev.msfjarvis.claw.android-library") } -kotlin { - android() - jvm("desktop") - sourceSets["androidMain"].apply { dependencies { implementation(libs.sqldelight.androidDriver) } } - sourceSets["commonMain"].apply { - dependencies { implementation(libs.sqldelight.primitiveAdapters) } - } - sourceSets["desktopMain"].apply { dependencies { implementation(libs.sqldelight.jvmDriver) } } - sourceSets["desktopTest"].apply { - dependencies { - implementation(libs.kotlinx.coroutines.core) - implementation(kotlin("test-junit")) - } - } -} - -android { - namespace = "dev.msfjarvis.claw.database" - sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") -} +android { namespace = "dev.msfjarvis.claw.database" } sqldelight { database("LobstersDatabase") { packageName = "dev.msfjarvis.claw.database" sourceFolders = listOf("sqldelight") - schemaOutputDirectory = file("src/commonMain/sqldelight/databases") + schemaOutputDirectory = file("src/main/sqldelight/databases") verifyMigrations = true } } + +dependencies { + implementation(libs.sqldelight.androidDriver) + implementation(libs.sqldelight.primitiveAdapters) + testImplementation(libs.sqldelight.jvmDriver) + testImplementation(libs.kotlinx.coroutines.core) + testImplementation(kotlin("test-junit")) +} diff --git a/database/src/androidMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt b/database/src/androidMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt deleted file mode 100644 index ef3fac1d..00000000 --- a/database/src/androidMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt +++ /dev/null @@ -1,12 +0,0 @@ -package dev.msfjarvis.claw.database.local - -import android.content.Context -import app.cash.sqldelight.db.SqlDriver -import app.cash.sqldelight.driver.android.AndroidSqliteDriver -import dev.msfjarvis.claw.database.LobstersDatabase - -actual class DriverFactory(private val context: Context) { - actual fun createDriver(): SqlDriver { - return AndroidSqliteDriver(LobstersDatabase.Schema, context, LobstersDatabaseName) - } -} diff --git a/database/src/desktopMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt b/database/src/desktopMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt deleted file mode 100644 index 1d575b78..00000000 --- a/database/src/desktopMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt +++ /dev/null @@ -1,17 +0,0 @@ -package dev.msfjarvis.claw.database.local - -import app.cash.sqldelight.db.SqlDriver -import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver -import dev.msfjarvis.claw.database.LobstersDatabase -import java.io.File - -actual class DriverFactory { - actual fun createDriver(): SqlDriver { - val env = System.getenv() - val home = env["HOME"] - val sqlitePath = "$home${File.pathSeparatorChar}.cache${File.pathSeparatorChar}Claw_database.db" - val driver: SqlDriver = JdbcSqliteDriver("jdbc:sqlite:$sqlitePath") - LobstersDatabase.Schema.create(driver) - return driver - } -} diff --git a/database/src/androidMain/AndroidManifest.xml b/database/src/main/AndroidManifest.xml similarity index 100% rename from database/src/androidMain/AndroidManifest.xml rename to database/src/main/AndroidManifest.xml diff --git a/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt b/database/src/main/kotlin/dev/msfjarvis/claw/database/local/Database.kt similarity index 59% rename from database/src/commonMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt rename to database/src/main/kotlin/dev/msfjarvis/claw/database/local/Database.kt index 37ea0dc5..02dd4d0d 100644 --- a/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt +++ b/database/src/main/kotlin/dev/msfjarvis/claw/database/local/Database.kt @@ -1,17 +1,14 @@ package dev.msfjarvis.claw.database.local +import android.content.Context import app.cash.sqldelight.adapter.primitive.IntColumnAdapter -import app.cash.sqldelight.db.SqlDriver +import app.cash.sqldelight.driver.android.AndroidSqliteDriver import dev.msfjarvis.claw.database.LobstersDatabase import dev.msfjarvis.claw.database.model.TagsAdapter internal const val LobstersDatabaseName = "SavedPosts.db" -expect class DriverFactory { - fun createDriver(): SqlDriver -} - -fun createDatabase(driverFactory: DriverFactory): LobstersDatabase { - val driver = driverFactory.createDriver() +fun createDatabase(context: Context): LobstersDatabase { + val driver = AndroidSqliteDriver(LobstersDatabase.Schema, context, LobstersDatabaseName) return LobstersDatabase(driver, SavedPost.Adapter(IntColumnAdapter, TagsAdapter())) } diff --git a/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/model/TagsAdapter.kt b/database/src/main/kotlin/dev/msfjarvis/claw/database/model/TagsAdapter.kt similarity index 100% rename from database/src/commonMain/kotlin/dev/msfjarvis/claw/database/model/TagsAdapter.kt rename to database/src/main/kotlin/dev/msfjarvis/claw/database/model/TagsAdapter.kt diff --git a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/1.db b/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/1.db similarity index 100% rename from database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/1.db rename to database/src/main/sqldelight/dev/msfjarvis/claw/database/local/1.db diff --git a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/1.sqm b/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/1.sqm similarity index 100% rename from database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/1.sqm rename to database/src/main/sqldelight/dev/msfjarvis/claw/database/local/1.sqm diff --git a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/2.sqm b/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/2.sqm similarity index 100% rename from database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/2.sqm rename to database/src/main/sqldelight/dev/msfjarvis/claw/database/local/2.sqm diff --git a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/SavedPost.sq b/database/src/main/sqldelight/dev/msfjarvis/claw/database/local/SavedPost.sq similarity index 100% rename from database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/SavedPost.sq rename to database/src/main/sqldelight/dev/msfjarvis/claw/database/local/SavedPost.sq diff --git a/database/src/desktopTest/kotlin/dev/msfjarvis/claw/database/local/SqlDelightQueriesTest.kt b/database/src/test/kotlin/dev/msfjarvis/claw/database/local/SqlDelightQueriesTest.kt similarity index 100% rename from database/src/desktopTest/kotlin/dev/msfjarvis/claw/database/local/SqlDelightQueriesTest.kt rename to database/src/test/kotlin/dev/msfjarvis/claw/database/local/SqlDelightQueriesTest.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index 9ca0fa65..c8aa6f27 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -98,6 +98,7 @@ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") include( "api", + "database", "model", )