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 |