diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt index bdc79f12..636a4b95 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/DatabaseModule.kt @@ -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) } } diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/SavedPostsRepository.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/SavedPostsRepository.kt index 7f81f958..586f77bb 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/SavedPostsRepository.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/SavedPostsRepository.kt @@ -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 diff --git a/database/build.gradle.kts b/database/build.gradle.kts index 6bff7f73..256d4b20 100644 --- a/database/build.gradle.kts +++ b/database/build.gradle.kts @@ -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 { diff --git a/database/src/androidMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt b/database/src/androidMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt index 94423f6c..ef3fac1d 100644 --- a/database/src/androidMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt +++ b/database/src/androidMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt @@ -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) { diff --git a/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt b/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt index 779a812f..0098dd60 100644 --- a/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt +++ b/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt @@ -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())) } diff --git a/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/model/TagsAdapter.kt b/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/model/TagsAdapter.kt index 0be2d607..05ff9ba4 100644 --- a/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/model/TagsAdapter.kt +++ b/database/src/commonMain/kotlin/dev/msfjarvis/claw/database/model/TagsAdapter.kt @@ -1,6 +1,6 @@ package dev.msfjarvis.claw.database.model -import com.squareup.sqldelight.ColumnAdapter +import app.cash.sqldelight.ColumnAdapter class TagsAdapter : ColumnAdapter, String> { override fun decode(databaseValue: String): List { diff --git a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/1.sqm b/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/1.sqm index 4658526f..0d8992ca 100644 --- a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/1.sqm +++ b/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/1.sqm @@ -1 +1,3 @@ +import kotlin.Int; + ALTER TABLE SavedPost ADD COLUMN commentCount INTEGER AS Int; diff --git a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/2.sqm b/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/2.sqm index 1d2619a5..fbf080f3 100644 --- a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/2.sqm +++ b/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/2.sqm @@ -1,3 +1,5 @@ +import kotlin.Int; +import kotlin.String; import kotlin.collections.List; ALTER TABLE SavedPost RENAME TO SavedPost_Old; diff --git a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/SavedPost.sq b/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/SavedPost.sq index 7b52e8b3..954b7cbe 100644 --- a/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/SavedPost.sq +++ b/database/src/commonMain/sqldelight/dev/msfjarvis/claw/database/local/SavedPost.sq @@ -1,3 +1,5 @@ +import kotlin.Int; +import kotlin.String; import kotlin.collections.List; CREATE TABLE IF NOT EXISTS SavedPost( diff --git a/database/src/desktopMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt b/database/src/desktopMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt index 6186ee45..1d575b78 100644 --- a/database/src/desktopMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt +++ b/database/src/desktopMain/kotlin/dev/msfjarvis/claw/database/local/Database.kt @@ -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 diff --git a/database/src/desktopTest/kotlin/dev/msfjarvis/claw/database/local/SqlDelightQueriesTest.kt b/database/src/desktopTest/kotlin/dev/msfjarvis/claw/database/local/SqlDelightQueriesTest.kt index eba330f4..78768533 100644 --- a/database/src/desktopTest/kotlin/dev/msfjarvis/claw/database/local/SqlDelightQueriesTest.kt +++ b/database/src/desktopTest/kotlin/dev/msfjarvis/claw/database/local/SqlDelightQueriesTest.kt @@ -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 } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1d3981bb..72492b58 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -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" }