mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 08:17:04 +05:30
database: migrate to Android-only
This commit is contained in:
parent
000b782b86
commit
e7f4c8a7eb
13 changed files with 18 additions and 66 deletions
|
@ -7,7 +7,6 @@ import dagger.hilt.InstallIn
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import dagger.hilt.components.SingletonComponent
|
import dagger.hilt.components.SingletonComponent
|
||||||
import dev.msfjarvis.claw.database.LobstersDatabase
|
import dev.msfjarvis.claw.database.LobstersDatabase
|
||||||
import dev.msfjarvis.claw.database.local.DriverFactory
|
|
||||||
import dev.msfjarvis.claw.database.local.createDatabase
|
import dev.msfjarvis.claw.database.local.createDatabase
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
|
@ -15,12 +14,7 @@ import dev.msfjarvis.claw.database.local.createDatabase
|
||||||
object DatabaseModule {
|
object DatabaseModule {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
fun provideDriverFactory(@ApplicationContext context: Context): DriverFactory {
|
fun provideDatabase(@ApplicationContext context: Context): LobstersDatabase {
|
||||||
return DriverFactory(context)
|
return createDatabase(context)
|
||||||
}
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
fun provideDatabase(factory: DriverFactory): LobstersDatabase {
|
|
||||||
return createDatabase(factory)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,38 +1,27 @@
|
||||||
@file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage")
|
@file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage")
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("multiplatform")
|
kotlin("android")
|
||||||
alias(libs.plugins.sqldelight)
|
alias(libs.plugins.sqldelight)
|
||||||
id("dev.msfjarvis.claw.kotlin-common")
|
id("dev.msfjarvis.claw.kotlin-common")
|
||||||
id("dev.msfjarvis.claw.android-library")
|
id("dev.msfjarvis.claw.android-library")
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin {
|
android { namespace = "dev.msfjarvis.claw.database" }
|
||||||
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")
|
|
||||||
}
|
|
||||||
|
|
||||||
sqldelight {
|
sqldelight {
|
||||||
database("LobstersDatabase") {
|
database("LobstersDatabase") {
|
||||||
packageName = "dev.msfjarvis.claw.database"
|
packageName = "dev.msfjarvis.claw.database"
|
||||||
sourceFolders = listOf("sqldelight")
|
sourceFolders = listOf("sqldelight")
|
||||||
schemaOutputDirectory = file("src/commonMain/sqldelight/databases")
|
schemaOutputDirectory = file("src/main/sqldelight/databases")
|
||||||
verifyMigrations = true
|
verifyMigrations = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(libs.sqldelight.androidDriver)
|
||||||
|
implementation(libs.sqldelight.primitiveAdapters)
|
||||||
|
testImplementation(libs.sqldelight.jvmDriver)
|
||||||
|
testImplementation(libs.kotlinx.coroutines.core)
|
||||||
|
testImplementation(kotlin("test-junit"))
|
||||||
|
}
|
||||||
|
|
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,17 +1,14 @@
|
||||||
package dev.msfjarvis.claw.database.local
|
package dev.msfjarvis.claw.database.local
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
import app.cash.sqldelight.adapter.primitive.IntColumnAdapter
|
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.LobstersDatabase
|
||||||
import dev.msfjarvis.claw.database.model.TagsAdapter
|
import dev.msfjarvis.claw.database.model.TagsAdapter
|
||||||
|
|
||||||
internal const val LobstersDatabaseName = "SavedPosts.db"
|
internal const val LobstersDatabaseName = "SavedPosts.db"
|
||||||
|
|
||||||
expect class DriverFactory {
|
fun createDatabase(context: Context): LobstersDatabase {
|
||||||
fun createDriver(): SqlDriver
|
val driver = AndroidSqliteDriver(LobstersDatabase.Schema, context, LobstersDatabaseName)
|
||||||
}
|
|
||||||
|
|
||||||
fun createDatabase(driverFactory: DriverFactory): LobstersDatabase {
|
|
||||||
val driver = driverFactory.createDriver()
|
|
||||||
return LobstersDatabase(driver, SavedPost.Adapter(IntColumnAdapter, TagsAdapter()))
|
return LobstersDatabase(driver, SavedPost.Adapter(IntColumnAdapter, TagsAdapter()))
|
||||||
}
|
}
|
|
@ -98,6 +98,7 @@ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
|
||||||
|
|
||||||
include(
|
include(
|
||||||
"api",
|
"api",
|
||||||
|
"database",
|
||||||
"model",
|
"model",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue