app/src/main/java/com/geekorum/ttrss/data/TransactionsDao.kt
changeset 35 d2f081b5b95f
parent 0 14443efede32
child 36 5c1712a5cc1c
equal deleted inserted replaced
34:ff311c97b464 35:d2f081b5b95f
    30  * Dao to read/modify transactions.
    30  * Dao to read/modify transactions.
    31  */
    31  */
    32 @Dao
    32 @Dao
    33 abstract class TransactionsDao {
    33 abstract class TransactionsDao {
    34     @Insert(onConflict = OnConflictStrategy.REPLACE)
    34     @Insert(onConflict = OnConflictStrategy.REPLACE)
    35     abstract fun insertTransaction(transaction: Transaction)
    35     abstract suspend fun insertTransaction(transaction: Transaction)
    36 
    36 
    37     @Delete
    37     @Delete
    38     abstract fun deleteTransactions(vararg transactions: Transaction)
    38     abstract suspend fun deleteTransactions(vararg transactions: Transaction)
    39 
    39 
    40     @Delete
    40     @Delete
    41     abstract fun deleteTransactions(transactions: Collection<Transaction>)
    41     abstract suspend fun deleteTransactions(transactions: Collection<Transaction>)
    42 
    42 
    43 
    43 
    44     @Query("SELECT * FROM transactions WHERE article_id=:articleId AND field=:field")
    44     @Query("SELECT * FROM transactions WHERE article_id=:articleId AND field=:field")
    45     abstract fun getTransactionForArticleAndType(articleId: Long, field: String): List<Transaction>
    45     abstract suspend fun getTransactionForArticleAndType(articleId: Long, field: String): List<Transaction>
    46 
    46 
    47     /**
    47     /**
    48      * Insert a unique transaction for a [Transaction.articleId] [Transaction.field] pair.
    48      * Insert a unique transaction for a [Transaction.articleId] [Transaction.field] pair.
    49      *
    49      *
    50      * @param transaction
    50      * @param transaction
    51      */
    51      */
    52     @androidx.room.Transaction
    52     @androidx.room.Transaction
    53     open fun insertUniqueTransaction(transaction: Transaction) {
    53     open suspend fun insertUniqueTransaction(transaction: Transaction) {
    54         val existingTransactions = getTransactionForArticleAndType(transaction.articleId, transaction.field)
    54         val existingTransactions = getTransactionForArticleAndType(transaction.articleId, transaction.field)
    55         deleteTransactions(existingTransactions)
    55         deleteTransactions(existingTransactions)
    56         insertTransaction(transaction)
    56         insertTransaction(transaction)
    57     }
    57     }
    58 
    58