mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-18 09:07:01 +05:30
Add saved entity and dao
Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
This commit is contained in:
parent
8cf2dfc71b
commit
3bd3f2dff8
2 changed files with 54 additions and 0 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_saved_posts",
|
||||||
|
primaryKeys = ["shortId"],
|
||||||
|
)
|
||||||
|
data class SavedLobstersEntity(
|
||||||
|
@Embedded
|
||||||
|
val post: LobstersPost
|
||||||
|
)
|
|
@ -0,0 +1,40 @@
|
||||||
|
package dev.msfjarvis.lobsters.data.source
|
||||||
|
|
||||||
|
import androidx.room.Dao
|
||||||
|
import androidx.room.Delete
|
||||||
|
import androidx.room.Insert
|
||||||
|
import androidx.room.OnConflictStrategy
|
||||||
|
import androidx.room.Query
|
||||||
|
import androidx.room.Transaction
|
||||||
|
import dev.msfjarvis.lobsters.data.model.LobstersEntity
|
||||||
|
import dev.msfjarvis.lobsters.data.model.SavedLobstersEntity
|
||||||
|
import dev.msfjarvis.lobsters.model.LobstersPost
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
|
@Dao
|
||||||
|
abstract class SavedPostsDao {
|
||||||
|
@Query("SELECT * FROM lobsters_saved_posts")
|
||||||
|
abstract fun loadPosts(): Flow<List<LobstersPost>>
|
||||||
|
|
||||||
|
@Transaction
|
||||||
|
open suspend fun insertPosts(vararg posts: LobstersPost) {
|
||||||
|
insertPosts(posts.map { SavedLobstersEntity(it) })
|
||||||
|
}
|
||||||
|
|
||||||
|
@Insert(onConflict = OnConflictStrategy.IGNORE)
|
||||||
|
protected abstract suspend fun insertPosts(posts: List<SavedLobstersEntity>)
|
||||||
|
|
||||||
|
@Transaction
|
||||||
|
open suspend fun deletePosts(vararg posts: LobstersPost) {
|
||||||
|
deletePosts(posts.map { SavedLobstersEntity(it) })
|
||||||
|
}
|
||||||
|
|
||||||
|
@Delete
|
||||||
|
protected abstract suspend fun deletePosts(posts: List<SavedLobstersEntity>)
|
||||||
|
|
||||||
|
@Query("DELETE FROM lobsters_saved_posts")
|
||||||
|
abstract suspend fun deleteAllPosts()
|
||||||
|
|
||||||
|
@Query("DELETE FROM lobsters_saved_posts WHERE shortId LIKE :shortId")
|
||||||
|
abstract suspend fun deletePostById(shortId: String)
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue