database: migrate to Android-only

This commit is contained in:
Harsh Shandilya 2022-08-02 22:08:17 +05:30
parent 000b782b86
commit e7f4c8a7eb
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
13 changed files with 18 additions and 66 deletions

View file

@ -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)
}
}

View file

@ -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"))
}

View file

@ -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)
}
}

View file

@ -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
}
}

View file

@ -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()))
}

View file

@ -98,6 +98,7 @@ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
include(
"api",
"database",
"model",
)