diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestAuthorDao.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestAuthorDao.kt index 84a27fd28..5cdfb6be3 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestAuthorDao.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestAuthorDao.kt @@ -57,6 +57,10 @@ class TestAuthorDao : AuthorDao { throw NotImplementedError("Unused in tests") } + override suspend fun upsertAuthors(entities: List) { + TODO("Not yet implemented") + } + override suspend fun deleteAuthors(ids: List) { val idSet = ids.toSet() entitiesStateFlow.update { entities -> diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestNewsResourceDao.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestNewsResourceDao.kt index c5e24419d..d5c0044f3 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestNewsResourceDao.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestNewsResourceDao.kt @@ -85,6 +85,10 @@ class TestNewsResourceDao : NewsResourceDao { throw NotImplementedError("Unused in tests") } + override suspend fun upsertNewsResources(newsResourceEntities: List) { + TODO("Not yet implemented") + } + override suspend fun insertOrIgnoreTopicCrossRefEntities( newsResourceTopicCrossReferences: List ) { diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestTopicDao.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestTopicDao.kt index 20eb00645..7f2efffc5 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestTopicDao.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestTopicDao.kt @@ -62,6 +62,10 @@ class TestTopicDao : TopicDao { throw NotImplementedError("Unused in tests") } + override suspend fun upsertTopics(entities: List) { + TODO("Not yet implemented") + } + override suspend fun deleteTopics(ids: List) { val idSet = ids.toSet() entitiesStateFlow.update { entities -> diff --git a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/AuthorDao.kt b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/AuthorDao.kt index 8c3726ed1..9790040f7 100644 --- a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/AuthorDao.kt +++ b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/AuthorDao.kt @@ -20,8 +20,8 @@ import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import androidx.room.Transaction import androidx.room.Update +import androidx.room.Upsert import com.google.samples.apps.nowinandroid.core.database.model.AuthorEntity import kotlinx.coroutines.flow.Flow @@ -56,12 +56,8 @@ interface AuthorDao { /** * Inserts or updates [entities] in the db under the specified primary keys */ - @Transaction - suspend fun upsertAuthors(entities: List) = upsert( - items = entities, - insertMany = ::insertOrIgnoreAuthors, - updateMany = ::updateAuthors - ) + @Upsert + suspend fun upsertAuthors(entities: List) /** * Deletes rows in the db matching the specified [ids] diff --git a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDao.kt b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDao.kt index 8200712bc..46f6b62f9 100644 --- a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDao.kt +++ b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDao.kt @@ -22,6 +22,7 @@ import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Transaction import androidx.room.Update +import androidx.room.Upsert import com.google.samples.apps.nowinandroid.core.database.model.NewsResourceAuthorCrossRef import com.google.samples.apps.nowinandroid.core.database.model.NewsResourceEntity import com.google.samples.apps.nowinandroid.core.database.model.NewsResourceTopicCrossRef @@ -80,12 +81,8 @@ interface NewsResourceDao { /** * Inserts or updates [newsResourceEntities] in the db under the specified primary keys */ - @Transaction - suspend fun upsertNewsResources(newsResourceEntities: List) = upsert( - items = newsResourceEntities, - insertMany = ::insertOrIgnoreNewsResources, - updateMany = ::updateNewsResources - ) + @Upsert + suspend fun upsertNewsResources(newsResourceEntities: List) @Insert(onConflict = OnConflictStrategy.IGNORE) suspend fun insertOrIgnoreTopicCrossRefEntities( diff --git a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/TopicDao.kt b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/TopicDao.kt index d03fd6a30..2728d5591 100644 --- a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/TopicDao.kt +++ b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/TopicDao.kt @@ -20,8 +20,8 @@ import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import androidx.room.Transaction import androidx.room.Update +import androidx.room.Upsert import com.google.samples.apps.nowinandroid.core.database.model.TopicEntity import kotlinx.coroutines.flow.Flow @@ -64,12 +64,8 @@ interface TopicDao { /** * Inserts or updates [entities] in the db under the specified primary keys */ - @Transaction - suspend fun upsertTopics(entities: List) = upsert( - items = entities, - insertMany = ::insertOrIgnoreTopics, - updateMany = ::updateTopics - ) + @Upsert + suspend fun upsertTopics(entities: List) /** * Deletes rows in the db matching the specified [ids] diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b19b1b866..7d9481c49 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -45,7 +45,7 @@ protobuf = "3.21.5" protobufPlugin = "0.8.19" retrofit = "2.9.0" retrofitKotlinxSerializationJson = "0.8.0" -room = "2.4.3" +room = "2.5.0-alpha03" secrets = "2.0.1" turbine = "0.8.0"