app/src/main/java/com/geekorum/ttrss/data/FeedsDao.kt
changeset 35 d2f081b5b95f
parent 0 14443efede32
child 36 5c1712a5cc1c
--- a/app/src/main/java/com/geekorum/ttrss/data/FeedsDao.kt	Tue Dec 11 14:38:14 2018 -0800
+++ b/app/src/main/java/com/geekorum/ttrss/data/FeedsDao.kt	Tue Dec 11 14:39:26 2018 -0800
@@ -40,8 +40,8 @@
     @get:Query("SELECT * FROM feeds ORDER BY title")
     abstract val allFeeds: LiveData<List<Feed>>
 
-    @get:Query("SELECT * FROM feeds")
-    internal abstract val allFeedsList: List<Feed>
+    @Query("SELECT * FROM feeds")
+    internal abstract suspend fun getAllFeedsList(): List<Feed>
 
     @get:Query("SELECT * FROM categories ORDER BY title")
     abstract val allCategories: LiveData<List<Category>>
@@ -49,20 +49,20 @@
     @get:Query("SELECT * FROM categories WHERE unread_count > 0 ORDER BY title")
     abstract val allUnreadCategories: LiveData<List<Category>>
 
-    @get:Query("SELECT * FROM categories")
-    internal abstract val allCategoriesList: List<Category>
+    @Query("SELECT * FROM categories")
+    abstract suspend fun getAllCategoriesList(): List<Category>
 
     @Insert(onConflict = OnConflictStrategy.REPLACE)
-    abstract fun insertFeeds(feeds: Collection<Feed>)
+    abstract suspend fun insertFeeds(feeds: Collection<Feed>)
 
     @Delete
-    internal abstract fun deleteFeeds(feeds: Collection<Feed>)
+    internal abstract suspend fun deleteFeeds(feeds: Collection<Feed>)
 
     @Query("DELETE FROM ARTICLES where feed_id=:feedId")
     internal abstract fun deleteArticleFromFeed(feedId: Long)
 
     @Transaction
-    open fun deleteFeedsAndArticles(toBeDelete: List<Feed>) {
+    open suspend fun deleteFeedsAndArticles(toBeDelete: List<Feed>) {
         for ((id) in toBeDelete) {
             deleteArticleFromFeed(id)
         }
@@ -74,10 +74,10 @@
     abstract fun getFeedById(id: Long): LiveData<Feed>
 
     @Insert(onConflict = OnConflictStrategy.REPLACE)
-    abstract fun insertCategories(categories: Collection<Category>)
+    abstract suspend fun insertCategories(categories: Collection<Category>)
 
     @Delete
-    abstract fun deleteCategories(categories: Collection<Category>)
+    abstract suspend fun deleteCategories(categories: Collection<Category>)
 
     @Query("SELECT * FROM feeds WHERE unread_count > 0 AND cat_id=:catId ORDER BY title")
     abstract fun getUnreadFeedsForCategory(catId: Long): LiveData<List<Feed>>
@@ -86,25 +86,23 @@
     abstract fun getFeedsForCategory(catId: Long): LiveData<List<Feed>>
 
     @Transaction
-    open fun setFeedsAndCategories(feeds: Collection<Feed>, categories: Collection<Category>) {
+    open suspend fun setFeedsAndCategories(feeds: Collection<Feed>, categories: Collection<Category>) {
         setCategories(categories)
         setFeeds(feeds)
     }
 
-    private fun setFeeds(feeds: Collection<Feed>) {
+    private suspend fun setFeeds(feeds: Collection<Feed>) {
         val feedsIds: List<Long> = feeds.map { it.id }
-        val toDelete = allFeedsList.filter { it.id !in feedsIds }
+        val toDelete = getAllFeedsList().filter { it.id !in feedsIds }
 
         deleteFeedsAndArticles(toDelete)
         insertFeeds(feeds)
     }
 
-    private fun setCategories(categories: Collection<Category>) {
+    private suspend fun setCategories(categories: Collection<Category>) {
         val categoriesIds: List<Long> = categories.map { category -> category.id }
-        val toDelete = allCategoriesList.filter { it.id !in categoriesIds }
+        val toDelete = getAllCategoriesList().filter { it.id !in categoriesIds }
         deleteCategories(toDelete)
         insertCategories(categories)
     }
-
-
 }