summaryrefslogtreecommitdiff
path: root/bank/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'bank/src/main')
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/Constants.kt2
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt11
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt4
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt18
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt6
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt2
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt4
7 files changed, 32 insertions, 15 deletions
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/Constants.kt b/bank/src/main/kotlin/tech/libeufin/bank/Constants.kt
index 7a192308..15fe5be1 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/Constants.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/Constants.kt
@@ -40,7 +40,7 @@ const val IBAN_ALLOCATION_RETRY_COUNTER: Int = 5
const val MAX_BODY_LENGTH: Long = 4 * 1024 // 4kB
// API version
-const val COREBANK_API_VERSION: String = "4:4:0"
+const val COREBANK_API_VERSION: String = "4:5:0"
const val CONVERSION_API_VERSION: String = "0:0:0"
const val INTEGRATION_API_VERSION: String = "2:0:2"
const val WIRE_GATEWAY_API_VERSION: String = "0:2:0"
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt b/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt
index ce459baa..b9bfcbec 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt
@@ -55,6 +55,11 @@ enum class WithdrawalStatus {
confirmed
}
+enum class AccountStatus {
+ active,
+ deleted
+}
+
enum class RoundingMode {
zero,
up,
@@ -350,7 +355,8 @@ data class AccountMinimalData(
val debit_threshold: TalerAmount,
val is_public: Boolean,
val is_taler_exchange: Boolean,
- val row_id: Long
+ val row_id: Long,
+ val status: AccountStatus
)
/**
@@ -374,7 +380,8 @@ data class AccountData(
val cashout_payto_uri: String? = null,
val tan_channel: TanChannel? = null,
val is_public: Boolean,
- val is_taler_exchange: Boolean
+ val is_taler_exchange: Boolean,
+ val status: AccountStatus
)
@Serializable
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt b/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
index a3bb8265..45689bf0 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
@@ -422,7 +422,7 @@ private fun Routing.coreBankAccountsApi(db: Database, ctx: BankConfig) {
}
private fun Routing.coreBankTransactionsApi(db: Database, ctx: BankConfig) {
- auth(db, TokenScope.readonly) {
+ auth(db, TokenScope.readonly, allowAdmin = true) {
get("/accounts/{USERNAME}/transactions") {
val params = HistoryParams.extract(call.request.queryParameters)
val bankAccount = call.bankInfo(db, ctx.payto)
@@ -618,7 +618,7 @@ private fun Routing.coreBankCashoutApi(db: Database, ctx: BankConfig) = conditio
}
}
}
- auth(db, TokenScope.readonly) {
+ auth(db, TokenScope.readonly, allowAdmin = true) {
get("/accounts/{USERNAME}/cashouts/{CASHOUT_ID}") {
val id = call.longPath("CASHOUT_ID")
val cashout = db.cashout.get(id, username) ?: throw notFound(
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt
index 7781d807..a3a5d8e5 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt
@@ -436,7 +436,7 @@ class AccountDAO(private val db: Database) {
,is_taler_exchange
FROM bank_accounts
JOIN customers ON customer_id=owning_customer_id
- WHERE login=? AND deleted_at IS NULL
+ WHERE login=?
""")
stmt.setString(1, login)
stmt.oneOrNull {
@@ -465,10 +465,14 @@ class AccountDAO(private val db: Database) {
,(max_debt).frac AS max_debt_frac
,is_public
,is_taler_exchange
+ ,CASE
+ WHEN deleted_at IS NOT NULL THEN 'deleted'
+ ELSE 'active'
+ END as status
FROM customers
JOIN bank_accounts
ON customer_id=owning_customer_id
- WHERE login=? AND deleted_at IS NULL
+ WHERE login=?
""")
stmt.setString(1, login)
stmt.oneOrNull {
@@ -492,7 +496,8 @@ class AccountDAO(private val db: Database) {
),
debit_threshold = it.getAmount("max_debt", db.bankCurrency),
is_public = it.getBoolean("is_public"),
- is_taler_exchange = it.getBoolean("is_taler_exchange")
+ is_taler_exchange = it.getBoolean("is_taler_exchange"),
+ status = AccountStatus.valueOf(it.getString("status"))
)
}
}
@@ -555,9 +560,13 @@ class AccountDAO(private val db: Database) {
,is_taler_exchange
,internal_payto_uri
,bank_account_id
+ ,CASE
+ WHEN deleted_at IS NOT NULL THEN 'deleted'
+ ELSE 'active'
+ END as status
FROM bank_accounts JOIN customers
ON owning_customer_id = customer_id
- WHERE name LIKE ? AND deleted_at IS NULL AND
+ WHERE name LIKE ? AND
""",
{
setString(1, params.loginFilter)
@@ -580,6 +589,7 @@ class AccountDAO(private val db: Database) {
is_public = it.getBoolean("is_public"),
is_taler_exchange = it.getBoolean("is_taler_exchange"),
payto_uri = it.getBankPayto("internal_payto_uri", "name", ctx),
+ status = AccountStatus.valueOf(it.getString("status"))
)
}
} \ No newline at end of file
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt
index 45da0854..958d2b33 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt
@@ -104,7 +104,7 @@ class CashoutDAO(private val db: Database) {
JOIN bank_accounts ON bank_account=bank_account_id
JOIN customers ON owning_customer_id=customer_id
LEFT JOIN bank_account_transactions ON local_transaction=bank_transaction_id
- WHERE cashout_id=? AND login=? AND deleted_at IS NULL
+ WHERE cashout_id=? AND login=?
""")
stmt.setLong(1, id)
stmt.setString(2, login)
@@ -134,7 +134,7 @@ class CashoutDAO(private val db: Database) {
FROM cashout_operations
JOIN bank_accounts ON bank_account=bank_account_id
JOIN customers ON owning_customer_id=customer_id
- WHERE deleted_at IS NULL AND
+ WHERE
""") {
GlobalCashoutInfo(
cashout_id = it.getLong("cashout_id"),
@@ -150,7 +150,7 @@ class CashoutDAO(private val db: Database) {
FROM cashout_operations
JOIN bank_accounts ON bank_account=bank_account_id
JOIN customers ON owning_customer_id=customer_id
- WHERE login = ? AND deleted_at IS NULL AND
+ WHERE login = ? AND
""",
bind = {
setString(1, login)
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 e82f0ba2..cf5ef9bc 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt
@@ -165,7 +165,7 @@ class TransactionDAO(private val db: Database) {
FROM bank_account_transactions
JOIN bank_accounts ON bank_account_transactions.bank_account_id=bank_accounts.bank_account_id
JOIN customers ON customer_id=owning_customer_id
- WHERE bank_transaction_id=? AND login=? AND deleted_at IS NULL
+ WHERE bank_transaction_id=? AND login=?
""")
stmt.setLong(1, rowId)
stmt.setString(2, login)
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt
index 3a41c0d8..4b069339 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt
@@ -189,7 +189,7 @@ class WithdrawalDAO(private val db: Database) {
FROM taler_withdrawal_operations
JOIN bank_accounts ON wallet_bank_account=bank_account_id
JOIN customers ON customer_id=owning_customer_id
- WHERE withdrawal_uuid=? AND deleted_at IS NULL
+ WHERE withdrawal_uuid=?
""")
stmt.setObject(1, uuid)
stmt.oneOrNull { it.getString(1) }
@@ -250,7 +250,7 @@ class WithdrawalDAO(private val db: Database) {
FROM taler_withdrawal_operations
JOIN bank_accounts ON wallet_bank_account=bank_account_id
JOIN customers ON customer_id=owning_customer_id
- WHERE withdrawal_uuid=? AND deleted_at IS NULL
+ WHERE withdrawal_uuid=?
""")
stmt.setObject(1, uuid)
stmt.oneOrNull {