mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-17 22:37:03 +05:30
data: wrap LobstersPost into an intermediate entity
This lets us keep the same database structure without needing to leak Room-specific properties into our model Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
8d4535d6bf
commit
aa7a732cce
3 changed files with 30 additions and 3 deletions
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue