diff options
Diffstat (limited to 'bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt')
-rw-r--r-- | bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt index 1485ec52..a72f9743 100644 --- a/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt +++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt @@ -38,6 +38,7 @@ class TransactionDAO(private val db: Database) { object UnknownDebtor: BankTransactionResult() object BothPartySame: BankTransactionResult() object BalanceInsufficient: BankTransactionResult() + object TanRequired: BankTransactionResult() } /** Create a new transaction */ @@ -47,6 +48,7 @@ class TransactionDAO(private val db: Database) { subject: String, amount: TalerAmount, timestamp: Instant, + is2fa: Boolean ): BankTransactionResult = db.serializable { conn -> val now = timestamp.toDbMicros() ?: throw faultyTimestampByBank(); conn.transaction { @@ -56,6 +58,7 @@ class TransactionDAO(private val db: Database) { ,out_debtor_not_found ,out_same_account ,out_balance_insufficient + ,out_tan_required ,out_credit_bank_account_id ,out_debit_bank_account_id ,out_credit_row_id @@ -63,7 +66,7 @@ class TransactionDAO(private val db: Database) { ,out_creditor_is_exchange ,out_debtor_is_exchange ,out_creditor_admin - FROM bank_transaction(?,?,?,(?,?)::taler_amount,?) + FROM bank_transaction(?,?,?,(?,?)::taler_amount,?,?) """ ) stmt.setString(1, creditAccountPayto.canonical) @@ -72,6 +75,7 @@ class TransactionDAO(private val db: Database) { stmt.setLong(4, amount.value) stmt.setInt(5, amount.frac) stmt.setLong(6, now) + stmt.setBoolean(7, is2fa) stmt.executeQuery().use { when { !it.next() -> throw internalServerError("Bank transaction didn't properly return") @@ -80,6 +84,7 @@ class TransactionDAO(private val db: Database) { it.getBoolean("out_same_account") -> BankTransactionResult.BothPartySame it.getBoolean("out_balance_insufficient") -> BankTransactionResult.BalanceInsufficient it.getBoolean("out_creditor_admin") -> BankTransactionResult.AdminCreditor + it.getBoolean("out_tan_required") -> BankTransactionResult.TanRequired else -> { val creditAccountId = it.getLong("out_credit_bank_account_id") val creditRowId = it.getLong("out_credit_row_id") |