Merge pull request #26 from msfjarvis/leaky-abstractions

Cure a case of leaky abstractions with sad indirection
This commit is contained in:
probot-auto-merge[bot]
2020-09-27 05:02:55 +00:00
committed by GitHub
7 changed files with 38 additions and 12 deletions
+7
View File
@@ -71,3 +71,10 @@ subprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
tasks {
wrapper {
gradleVersion = "6.7-rc-2"
distributionType = Wrapper.DistributionType.ALL
}
}
@@ -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
)
@@ -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<List<LobstersPost>>
@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<LobstersEntity>)
@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<LobstersEntity>)
@Query("DELETE FROM lobsters_posts")
abstract suspend fun deleteAllPosts()
@@ -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,
+1 -1
View File
@@ -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
-2
View File
@@ -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"
}
@@ -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,