diff --git a/build.gradle b/build.gradle index a6d55a8d..f015fb1e 100644 --- a/build.gradle +++ b/build.gradle @@ -71,3 +71,10 @@ subprojects { task clean(type: Delete) { delete rootProject.buildDir } + +tasks { + wrapper { + gradleVersion = "6.7-rc-2" + distributionType = Wrapper.DistributionType.ALL + } +} diff --git a/data/src/main/java/dev/msfjarvis/lobsters/data/model/LobstersEntity.kt b/data/src/main/java/dev/msfjarvis/lobsters/data/model/LobstersEntity.kt new file mode 100644 index 00000000..c7f1a11f --- /dev/null +++ b/data/src/main/java/dev/msfjarvis/lobsters/data/model/LobstersEntity.kt @@ -0,0 +1,14 @@ +package dev.msfjarvis.lobsters.data.model + +import androidx.room.Embedded +import androidx.room.Entity +import dev.msfjarvis.lobsters.model.LobstersPost + +@Entity( + tableName = "lobsters_posts", + primaryKeys = ["shortId"], +) +data class LobstersEntity( + @Embedded + val post: LobstersPost +) diff --git a/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDao.kt b/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDao.kt index 9247ebe2..6de53a3e 100644 --- a/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDao.kt +++ b/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDao.kt @@ -4,6 +4,8 @@ import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.Query +import androidx.room.Transaction +import dev.msfjarvis.lobsters.data.model.LobstersEntity import dev.msfjarvis.lobsters.model.LobstersPost import kotlinx.coroutines.flow.Flow @@ -12,11 +14,21 @@ abstract class PostsDao { @Query("SELECT * FROM lobsters_posts") abstract fun loadPosts(): Flow> + @Transaction + open suspend fun insertPosts(vararg posts: LobstersPost) { + insertPosts(posts.map { LobstersEntity(it) }) + } + @Insert - abstract suspend fun insertPosts(vararg posts: LobstersPost) + protected abstract suspend fun insertPosts(posts: List) + + @Transaction + open suspend fun deletePosts(vararg posts: LobstersPost) { + deletePosts(posts.map { LobstersEntity(it) }) + } @Delete - abstract suspend fun deletePosts(vararg posts: LobstersPost) + protected abstract suspend fun deletePosts(posts: List) @Query("DELETE FROM lobsters_posts") abstract suspend fun deleteAllPosts() diff --git a/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt b/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt index 0640e663..cfe896a3 100644 --- a/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt +++ b/data/src/main/java/dev/msfjarvis/lobsters/data/source/PostsDatabase.kt @@ -3,11 +3,12 @@ package dev.msfjarvis.lobsters.data.source import androidx.room.Database import androidx.room.RoomDatabase import androidx.room.TypeConverters +import dev.msfjarvis.lobsters.data.model.LobstersEntity import dev.msfjarvis.lobsters.model.LobstersPost @Database( entities = [ - LobstersPost::class, + LobstersEntity::class, ], version = 1, exportSchema = false, diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 21f9f98d..17f4cffb 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-rc-1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-rc-2-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/model/build.gradle b/model/build.gradle index 5ed00f0f..4d9b064a 100644 --- a/model/build.gradle +++ b/model/build.gradle @@ -3,8 +3,6 @@ plugins { } dependencies { - api "androidx.room:room-runtime:$room_version" kapt "com.squareup.moshi:moshi-kotlin-codegen:$moshi_version" implementation "com.squareup.moshi:moshi:$moshi_version" - implementation "com.squareup.moshi:moshi-kotlin:$moshi_version" } diff --git a/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt b/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt index db283b94..ed0496c0 100644 --- a/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt +++ b/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt @@ -1,17 +1,11 @@ package dev.msfjarvis.lobsters.model -import androidx.room.Entity -import androidx.room.PrimaryKey import com.squareup.moshi.Json import com.squareup.moshi.JsonClass -@Entity( - tableName = "lobsters_posts" -) @JsonClass(generateAdapter = true) class LobstersPost( @Json(name = "short_id") - @PrimaryKey val shortId: String, @Json(name = "short_id_url") val shortIdUrl: String,