package com.financialviewer.db import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Update @Dao interface BankTransactionDao { @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertBankTransaction(bankTransaction: BankTransaction) @Update suspend fun updateBankTransaction(bankTransaction: BankTransaction) @Query("SELECT COUNT(*) FROM bank_Transactions") suspend fun getRowCount(): Int @Query("SELECT * FROM bank_Transactions WHERE refId = :refId") suspend fun getBankTransactionById(refId: String): BankTransaction? @Query("SELECT * FROM bank_Transactions ORDER BY date DESC LIMIT 1") suspend fun getLastBankTransaction(): BankTransaction? @Query("SELECT * FROM bank_Transactions WHERE date LIKE :year || '-%' ORDER BY date DESC") suspend fun getAllBankTransactionsDesc(year: String): List @Query("SELECT * FROM bank_Transactions WHERE date LIKE :year || '-%' AND category = :category ORDER BY date DESC") suspend fun getBankTransactionsByCategoryDesc(year: String, category: String): List @Query("SELECT * FROM bank_Transactions WHERE date LIKE :year || '-%' AND category IN (:categoryList) ORDER BY date DESC") suspend fun getBankTransactionsByCategoryListDesc(year: String, categoryList: MutableList): List @Query("SELECT * FROM bank_Transactions WHERE date LIKE :year || '-' || :month || '%' ORDER BY date DESC") suspend fun getBankTransactionsByMonthDesc(year: String, month: String): List @Query("SELECT * FROM bank_Transactions WHERE date LIKE :year || '-' || :month || '%' AND category IN (:categoryList) ORDER BY date DESC") suspend fun getBankTransactionsByMonthAndCategoryListDesc(year: String, month: String, categoryList: MutableList): List @Delete suspend fun deleteBankTransaction(bankTransaction: BankTransaction) }