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