mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 22:17:03 +05:30
Migrate to SQLDelight 2.0.0-alpha02
This commit is contained in:
parent
3ca9dc37d7
commit
f7cf5720a7
12 changed files with 33 additions and 31 deletions
|
@ -1,7 +1,6 @@
|
|||
package dev.msfjarvis.claw.android.injection
|
||||
|
||||
import android.content.Context
|
||||
import com.squareup.sqldelight.db.SqlDriver
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
|
@ -9,28 +8,19 @@ 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.SavedPost
|
||||
import dev.msfjarvis.claw.database.model.TagsAdapter
|
||||
import dev.msfjarvis.claw.database.local.createDatabase
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object DatabaseModule {
|
||||
|
||||
@Provides
|
||||
fun provideDriverFactory(@ApplicationContext context: Context): SqlDriver {
|
||||
return DriverFactory(context).createDriver()
|
||||
fun provideDriverFactory(@ApplicationContext context: Context): DriverFactory {
|
||||
return DriverFactory(context)
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideSavedPostsAdapter(): SavedPost.Adapter {
|
||||
return SavedPost.Adapter(TagsAdapter())
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideDatabase(
|
||||
driver: SqlDriver,
|
||||
adapter: SavedPost.Adapter,
|
||||
): LobstersDatabase {
|
||||
return LobstersDatabase(driver, adapter)
|
||||
fun provideDatabase(factory: DriverFactory): LobstersDatabase {
|
||||
return createDatabase(factory)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package dev.msfjarvis.claw.android.viewmodel
|
||||
|
||||
import android.util.Log
|
||||
import com.squareup.sqldelight.runtime.coroutines.asFlow
|
||||
import com.squareup.sqldelight.runtime.coroutines.mapToList
|
||||
import app.cash.sqldelight.coroutines.asFlow
|
||||
import app.cash.sqldelight.coroutines.mapToList
|
||||
import dev.msfjarvis.claw.database.LobstersDatabase
|
||||
import dev.msfjarvis.claw.database.local.SavedPost
|
||||
import javax.inject.Inject
|
||||
|
|
|
@ -17,6 +17,9 @@ kotlin {
|
|||
dependsOn(sourceSets["androidTestFixturesDebug"])
|
||||
dependsOn(sourceSets["androidTestFixturesRelease"])
|
||||
}
|
||||
sourceSets["commonMain"].apply {
|
||||
dependencies { implementation(libs.sqldelight.primitiveAdapters) }
|
||||
}
|
||||
sourceSets["desktopMain"].apply { dependencies { implementation(libs.sqldelight.jvmDriver) } }
|
||||
sourceSets["desktopTest"].apply {
|
||||
dependencies {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package dev.msfjarvis.claw.database.local
|
||||
|
||||
import android.content.Context
|
||||
import com.squareup.sqldelight.android.AndroidSqliteDriver
|
||||
import com.squareup.sqldelight.db.SqlDriver
|
||||
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) {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package dev.msfjarvis.claw.database.local
|
||||
|
||||
import com.squareup.sqldelight.db.SqlDriver
|
||||
import app.cash.sqldelight.adapter.primitive.IntColumnAdapter
|
||||
import app.cash.sqldelight.db.SqlDriver
|
||||
import dev.msfjarvis.claw.database.LobstersDatabase
|
||||
import dev.msfjarvis.claw.database.model.TagsAdapter
|
||||
|
||||
|
@ -14,5 +15,5 @@ private fun getTagsAdapter() = TagsAdapter()
|
|||
|
||||
fun createDatabase(driverFactory: DriverFactory): LobstersDatabase {
|
||||
val driver = driverFactory.createDriver()
|
||||
return LobstersDatabase(driver, SavedPost.Adapter(getTagsAdapter()))
|
||||
return LobstersDatabase(driver, SavedPost.Adapter(IntColumnAdapter, getTagsAdapter()))
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package dev.msfjarvis.claw.database.model
|
||||
|
||||
import com.squareup.sqldelight.ColumnAdapter
|
||||
import app.cash.sqldelight.ColumnAdapter
|
||||
|
||||
class TagsAdapter : ColumnAdapter<List<String>, String> {
|
||||
override fun decode(databaseValue: String): List<String> {
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
import kotlin.Int;
|
||||
|
||||
ALTER TABLE SavedPost ADD COLUMN commentCount INTEGER AS Int;
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import kotlin.Int;
|
||||
import kotlin.String;
|
||||
import kotlin.collections.List;
|
||||
|
||||
ALTER TABLE SavedPost RENAME TO SavedPost_Old;
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import kotlin.Int;
|
||||
import kotlin.String;
|
||||
import kotlin.collections.List;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS SavedPost(
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package dev.msfjarvis.claw.database.local
|
||||
|
||||
import com.squareup.sqldelight.db.SqlDriver
|
||||
import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver
|
||||
import app.cash.sqldelight.db.SqlDriver
|
||||
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
|
||||
import dev.msfjarvis.claw.database.LobstersDatabase
|
||||
import java.io.File
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package dev.msfjarvis.claw.database.local
|
||||
|
||||
import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver
|
||||
import app.cash.sqldelight.adapter.primitive.IntColumnAdapter
|
||||
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
|
||||
import dev.msfjarvis.claw.database.LobstersDatabase
|
||||
import dev.msfjarvis.claw.database.model.TagsAdapter
|
||||
import kotlin.test.Test
|
||||
|
@ -20,7 +21,7 @@ class SqlDelightQueriesTest {
|
|||
val database =
|
||||
LobstersDatabase(
|
||||
driver,
|
||||
SavedPost.Adapter(TagsAdapter()),
|
||||
SavedPost.Adapter(IntColumnAdapter, TagsAdapter()),
|
||||
)
|
||||
postQueries = database.savedPostQueries
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ hilt = "1.0.0"
|
|||
kotlin = "1.6.10"
|
||||
richtext = "0.11.0"
|
||||
serialization = "1.3.2"
|
||||
sqldelight = "1.5.3"
|
||||
sqldelight = "2.0.0-alpha02"
|
||||
workmanager = "2.8.0-alpha02"
|
||||
|
||||
[libraries]
|
||||
|
@ -49,12 +49,13 @@ multiplatform-paging = "io.github.kuuuurt:multiplatform-paging:0.4.7"
|
|||
r8 = "com.android.tools:r8:3.3.28"
|
||||
retrofit-kotlinxSerializationConverter = "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0"
|
||||
retrofit-lib = "com.squareup.retrofit2:retrofit:2.9.0"
|
||||
sqldelight-androidDriver = { module = "com.squareup.sqldelight:android-driver", version.ref = "sqldelight" }
|
||||
sqldelight-extensions-coroutines = { module = "com.squareup.sqldelight:coroutines-extensions-jvm", version.ref = "sqldelight" }
|
||||
sqldelight-jvmDriver = { module = "com.squareup.sqldelight:sqlite-driver", version.ref = "sqldelight" }
|
||||
sqldelight-androidDriver = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" }
|
||||
sqldelight-extensions-coroutines = { module = "app.cash.sqldelight:coroutines-extensions-jvm", version.ref = "sqldelight" }
|
||||
sqldelight-primitiveAdapters = { module = "app.cash.sqldelight:primitive-adapters", version.ref = "sqldelight" }
|
||||
sqldelight-jvmDriver = { module = "app.cash.sqldelight:sqlite-driver", version.ref = "sqldelight" }
|
||||
testing-mockWebServer = "com.squareup.okhttp3:mockwebserver3-junit4:5.0.0-alpha.6"
|
||||
|
||||
[plugins]
|
||||
compose = "org.jetbrains.compose:1.1.1"
|
||||
hilt = { id = "com.google.dagger.hilt.android", version.ref = "dagger" }
|
||||
sqldelight = "com.squareup.sqldelight:1.5.3"
|
||||
sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue