Migrate to SQLDelight 2.0.0-alpha02

This commit is contained in:
Harsh Shandilya 2022-04-14 12:25:14 +05:30
parent 3ca9dc37d7
commit f7cf5720a7
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
12 changed files with 33 additions and 31 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1 +1,3 @@
import kotlin.Int;
ALTER TABLE SavedPost ADD COLUMN commentCount INTEGER AS Int;

View file

@ -1,3 +1,5 @@
import kotlin.Int;
import kotlin.String;
import kotlin.collections.List;
ALTER TABLE SavedPost RENAME TO SavedPost_Old;

View file

@ -1,3 +1,5 @@
import kotlin.Int;
import kotlin.String;
import kotlin.collections.List;
CREATE TABLE IF NOT EXISTS SavedPost(

View file

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

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

View file

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