Coverage Summary for Class: GetTransactionsByAccountUseCase (com.georgeci.moneysurfer.domain.usecase)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| GetTransactionsByAccountUseCase |
100%
(1/1)
|
100%
(4/4)
|
|
100%
(5/5)
|
100%
(20/20)
|
package com.georgeci.moneysurfer.domain.usecase
import com.georgeci.moneysurfer.domain.model.CategorizedTransaction
import com.georgeci.moneysurfer.domain.model.Transaction
import com.georgeci.moneysurfer.domain.model.TransactionTotal
import com.georgeci.moneysurfer.domain.primitives.AccountId
import com.georgeci.moneysurfer.domain.repositories.TransactionRepository
import com.georgeci.moneysurfer.domain.util.TransactionPeriodWindow
import kotlinx.coroutines.flow.Flow
import org.koin.core.annotation.Single
@Single
class GetTransactionsByAccountUseCase(
private val transactionRepository: TransactionRepository,
) {
operator fun invoke(accountId: AccountId): Flow<List<Transaction>> =
transactionRepository.getByAccountId(accountId)
/**
* Newest-first page inside [window]. A `null` [accountId] spans every account, which is what
* the transactions list uses when it is opened outside an account.
*/
fun window(
accountId: AccountId?,
window: TransactionPeriodWindow,
limit: Int,
): Flow<List<CategorizedTransaction>> =
transactionRepository.getCategorizedWindow(accountId, window, limit)
/** Per-type, per-currency sums over the whole [window] — see [TransactionRepository.getTotals]. */
fun totals(
accountId: AccountId?,
window: TransactionPeriodWindow,
): Flow<List<TransactionTotal>> =
transactionRepository.getTotals(accountId, window)
}