commit 29b412cea0846c416eed2c83b8236162b7fbeb61 parent d67273a2041f1e20600b6f37137cea0ae542e91b Author: Antoine A <> Date: Tue, 4 Mar 2025 12:07:32 +0100 nexus: clean code Diffstat:
13 files changed, 39 insertions(+), 38 deletions(-)
diff --git a/nexus/sample/platform/gls_pain001.xml b/nexus/sample/platform/gls_pain001.xml @@ -1 +1 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 pain.001.001.09.xsd"><CstmrCdtTrfInitn><GrpHdr><MsgId>MESSAGE_ID</MsgId><CreDtTm>2024-09-09T00:00:00Z</CreDtTm><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><InitgPty><Nm>myname</Nm></InitgPty></GrpHdr><PmtInf><PmtInfId>NOTPROVIDED</PmtInfId><PmtMtd>TRF</PmtMtd><BtchBookg>false</BtchBookg><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><PmtTpInf><SvcLvl><Cd>SEPA</Cd></SvcLvl></PmtTpInf><ReqdExctnDt><Dt>2024-09-09Z</Dt></ReqdExctnDt><Dbtr><Nm>myname</Nm></Dbtr><DbtrAcct><Id><IBAN>CH7789144474425692816</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>BIC</BICFI></FinInstnId></DbtrAgt><ChrgBr>SLEV</ChrgBr><CdtTrfTxInf><PmtId><InstrId>TX_FIRST</InstrId><EndToEndId>TX_FIRST</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">42</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 42</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_SECOND</InstrId><EndToEndId>TX_SECOND</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">5.11</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 5.11</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_THIRD</InstrId><EndToEndId>TX_THIRD</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">0.21</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 0.21</Ustrd></RmtInf></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document> -\ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 pain.001.001.09.xsd"><CstmrCdtTrfInitn><GrpHdr><MsgId>MESSAGE_ID</MsgId><CreDtTm>2024-09-09T00:00:00Z</CreDtTm><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><InitgPty><Nm>myname</Nm></InitgPty></GrpHdr><PmtInf><PmtInfId>NOTPROVIDED</PmtInfId><PmtMtd>TRF</PmtMtd><BtchBookg>false</BtchBookg><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><PmtTpInf><SvcLvl><Cd>SEPA</Cd></SvcLvl></PmtTpInf><ReqdExctnDt><Dt>2024-09-09Z</Dt></ReqdExctnDt><Dbtr><Nm>myname</Nm></Dbtr><DbtrAcct><Id><IBAN>CH7789144474425692816</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>BIC</BICFI></FinInstnId></DbtrAgt><ChrgBr>SLEV</ChrgBr><CdtTrfTxInf><PmtId><InstrId>TX_FIRST</InstrId><EndToEndId>TX_FIRST</EndToEndId></PmtId><Amt><InstdAmt Ccy="CHF">42</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 42</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_SECOND</InstrId><EndToEndId>TX_SECOND</EndToEndId></PmtId><Amt><InstdAmt Ccy="CHF">5.11</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 5.11</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_THIRD</InstrId><EndToEndId>TX_THIRD</EndToEndId></PmtId><Amt><InstdAmt Ccy="CHF">0.21</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 0.21</Ustrd></RmtInf></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document> +\ No newline at end of file diff --git a/nexus/sample/platform/maerki_baumann_pain001.xml b/nexus/sample/platform/maerki_baumann_pain001.xml @@ -1 +1 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 pain.001.001.09.ch.03.xsd"><CstmrCdtTrfInitn><GrpHdr><MsgId>MESSAGE_ID</MsgId><CreDtTm>2024-09-09T00:00:00Z</CreDtTm><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><InitgPty><Nm>myname</Nm></InitgPty></GrpHdr><PmtInf><PmtInfId>NOTPROVIDED</PmtInfId><PmtMtd>TRF</PmtMtd><BtchBookg>false</BtchBookg><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><ReqdExctnDt><Dt>2024-09-09Z</Dt></ReqdExctnDt><Dbtr><Nm>myname</Nm></Dbtr><DbtrAcct><Id><IBAN>CH7789144474425692816</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>BIC</BICFI></FinInstnId></DbtrAgt><ChrgBr>SLEV</ChrgBr><CdtTrfTxInf><PmtId><InstrId>TX_FIRST</InstrId><EndToEndId>TX_FIRST</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">42</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 42</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_SECOND</InstrId><EndToEndId>TX_SECOND</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">5.11</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 5.11</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_THIRD</InstrId><EndToEndId>TX_THIRD</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">0.21</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 0.21</Ustrd></RmtInf></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document> -\ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 pain.001.001.09.ch.03.xsd"><CstmrCdtTrfInitn><GrpHdr><MsgId>MESSAGE_ID</MsgId><CreDtTm>2024-09-09T00:00:00Z</CreDtTm><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><InitgPty><Nm>myname</Nm></InitgPty></GrpHdr><PmtInf><PmtInfId>NOTPROVIDED</PmtInfId><PmtMtd>TRF</PmtMtd><BtchBookg>false</BtchBookg><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><ReqdExctnDt><Dt>2024-09-09Z</Dt></ReqdExctnDt><Dbtr><Nm>myname</Nm></Dbtr><DbtrAcct><Id><IBAN>CH7789144474425692816</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>BIC</BICFI></FinInstnId></DbtrAgt><ChrgBr>SLEV</ChrgBr><CdtTrfTxInf><PmtId><InstrId>TX_FIRST</InstrId><EndToEndId>TX_FIRST</EndToEndId></PmtId><Amt><InstdAmt Ccy="CHF">42</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 42</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_SECOND</InstrId><EndToEndId>TX_SECOND</EndToEndId></PmtId><Amt><InstdAmt Ccy="CHF">5.11</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 5.11</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_THIRD</InstrId><EndToEndId>TX_THIRD</EndToEndId></PmtId><Amt><InstdAmt Ccy="CHF">0.21</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 0.21</Ustrd></RmtInf></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document> +\ No newline at end of file diff --git a/nexus/sample/platform/postfinance_pain001.xml b/nexus/sample/platform/postfinance_pain001.xml @@ -1 +1 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 pain.001.001.09.ch.03.xsd"><CstmrCdtTrfInitn><GrpHdr><MsgId>MESSAGE_ID</MsgId><CreDtTm>2024-09-09T00:00:00Z</CreDtTm><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><InitgPty><Nm>myname</Nm></InitgPty></GrpHdr><PmtInf><PmtInfId>NOTPROVIDED</PmtInfId><PmtMtd>TRF</PmtMtd><BtchBookg>false</BtchBookg><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><ReqdExctnDt><Dt>2024-09-09Z</Dt></ReqdExctnDt><Dbtr><Nm>myname</Nm></Dbtr><DbtrAcct><Id><IBAN>CH7789144474425692816</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>BIC</BICFI></FinInstnId></DbtrAgt><ChrgBr>SLEV</ChrgBr><CdtTrfTxInf><PmtId><InstrId>TX_FIRST</InstrId><EndToEndId>TX_FIRST</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">42</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 42</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_SECOND</InstrId><EndToEndId>TX_SECOND</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">5.11</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 5.11</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_THIRD</InstrId><EndToEndId>TX_THIRD</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">0.21</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 0.21</Ustrd></RmtInf></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document> -\ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 pain.001.001.09.ch.03.xsd"><CstmrCdtTrfInitn><GrpHdr><MsgId>MESSAGE_ID</MsgId><CreDtTm>2024-09-09T00:00:00Z</CreDtTm><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><InitgPty><Nm>myname</Nm></InitgPty></GrpHdr><PmtInf><PmtInfId>NOTPROVIDED</PmtInfId><PmtMtd>TRF</PmtMtd><BtchBookg>false</BtchBookg><NbOfTxs>3</NbOfTxs><CtrlSum>47.32</CtrlSum><ReqdExctnDt><Dt>2024-09-09Z</Dt></ReqdExctnDt><Dbtr><Nm>myname</Nm></Dbtr><DbtrAcct><Id><IBAN>CH7789144474425692816</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>BIC</BICFI></FinInstnId></DbtrAgt><ChrgBr>SLEV</ChrgBr><CdtTrfTxInf><PmtId><InstrId>TX_FIRST</InstrId><EndToEndId>TX_FIRST</EndToEndId></PmtId><Amt><InstdAmt Ccy="CHF">42</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 42</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_SECOND</InstrId><EndToEndId>TX_SECOND</EndToEndId></PmtId><Amt><InstdAmt Ccy="CHF">5.11</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 5.11</Ustrd></RmtInf></CdtTrfTxInf><CdtTrfTxInf><PmtId><InstrId>TX_THIRD</InstrId><EndToEndId>TX_THIRD</EndToEndId></PmtId><Amt><InstdAmt Ccy="CHF">0.21</InstdAmt></Amt><Cdtr><Nm>Test</Nm></Cdtr><CdtrAcct><Id><IBAN>CH4189144589712575493</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Test 0.21</Ustrd></RmtInf></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document> +\ No newline at end of file diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/cli/EbicsSubmit.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/cli/EbicsSubmit.kt @@ -81,7 +81,7 @@ private suspend fun submitBatch(client: EbicsClient) { // Create batch if necessary client.db.initiated.batch(Instant.now(), randEbicsId()) // Send submitable batches - client.db.initiated.submittable(client.cfg.currency).forEach { batch -> + client.db.initiated.submittable().forEach { batch -> logger.debug("Submitting batch {}", batch.messageId) runCatching { submitBatch(client, batch) }.fold( onSuccess = { orderId -> diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/cli/Manual.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/cli/Manual.kt @@ -49,7 +49,7 @@ class ExportCmt: CliktCommand("export") { nexusConfig(common.config).withDb { db, cfg -> // Create and get pending batches db.initiated.batch(Instant.now(), randEbicsId()) - val batches = db.initiated.submittable(cfg.currency) + val batches = db.initiated.submittable() var nbTx: Int = 0 ZipOutputStream(BufferedOutputStream(FileOutputStream(out))).use { zip -> diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/db/Database.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/db/Database.kt @@ -86,7 +86,7 @@ enum class SubmissionState { } /** Collects database connection steps and any operation on the Nexus tables */ -class Database(dbConfig: DatabaseConfig, val bankCurrency: String): DbPool(dbConfig, "libeufin_nexus") { +class Database(dbConfig: DatabaseConfig, val currency: String): DbPool(dbConfig, "libeufin_nexus") { val payment = PaymentDAO(this) val initiated = InitiatedDAO(this) val exchange = ExchangeDAO(this) diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/db/ExchangeDAO.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/db/ExchangeDAO.kt @@ -49,16 +49,16 @@ class ExchangeDAO(private val db: Database) { IncomingType.reserve -> IncomingReserveTransaction( row_id = it.getLong("incoming_transaction_id"), date = it.getTalerTimestamp("execution_time"), - amount = it.getAmount("amount", db.bankCurrency), - credit_fee = it.getAmount("credit_fee", db.bankCurrency).notZeroOrNull(), + amount = it.getAmount("amount", db.currency), + credit_fee = it.getAmount("credit_fee", db.currency).notZeroOrNull(), debit_account = it.getString("debit_payto"), reserve_pub = EddsaPublicKey(it.getBytes("metadata")), ) IncomingType.kyc -> IncomingKycAuthTransaction( row_id = it.getLong("incoming_transaction_id"), date = it.getTalerTimestamp("execution_time"), - amount = it.getAmount("amount", db.bankCurrency), - credit_fee = it.getAmount("credit_fee", db.bankCurrency).notZeroOrNull(), + amount = it.getAmount("amount", db.currency), + credit_fee = it.getAmount("credit_fee", db.currency).notZeroOrNull(), debit_account = it.getString("debit_payto"), account_pub = EddsaPublicKey(it.getBytes("metadata")), ) @@ -86,7 +86,7 @@ class ExchangeDAO(private val db: Database) { OutgoingTransaction( row_id = it.getLong("outgoing_transaction_id"), date = it.getTalerTimestamp("execution_time"), - amount = it.getAmount("amount", db.bankCurrency), + amount = it.getAmount("amount", db.currency), credit_account = it.getString("credit_payto"), wtid = ShortHashCode(it.getBytes("wtid")), exchange_base_url = it.getString("exchange_base_url") @@ -167,7 +167,7 @@ class ExchangeDAO(private val db: Database) { TransferStatus( status = it.getEnum<SubmissionState>("status").toTransferStatus(), status_msg = it.getString("status_msg"), - amount = it.getAmount("amount", db.bankCurrency), + amount = it.getAmount("amount", db.currency), origin_exchange_url = it.getString("exchange_base_url"), wtid = ShortHashCode(it.getBytes("wtid")), credit_account = it.getString("credit_payto"), @@ -218,7 +218,7 @@ class ExchangeDAO(private val db: Database) { TransferListStatus( row_id = it.getLong("initiated_outgoing_transaction_id"), status = it.getEnum<SubmissionState>("status").toTransferStatus(), - amount = it.getAmount("amount", db.bankCurrency), + amount = it.getAmount("amount", db.currency), credit_account = it.getString("credit_payto"), timestamp = it.getTalerTimestamp("initiation_time"), ) diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/db/InitiatedDAO.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/db/InitiatedDAO.kt @@ -293,7 +293,7 @@ class InitiatedDAO(private val db: Database) { endToEndId = it.getString("end_to_end_id"), acctSvcrRef = null ), - amount = it.getAmount("amount", db.bankCurrency), + amount = it.getAmount("amount", db.currency), subject = it.getString("subject"), executionTime = executionTime, creditor = it.getIbanPayto("credit_payto") @@ -311,7 +311,7 @@ class InitiatedDAO(private val db: Database) { } /** List every initiated payment pending submission in the order they should be submitted */ - suspend fun submittable(currency: String): List<PaymentBatch> { + suspend fun submittable(): List<PaymentBatch> { val selectPart = """ SELECT initiated_outgoing_batch_id, message_id, creation_date, (sum).val as sum_val, (sum).frac as sum_frac FROM initiated_outgoing_batches @@ -337,7 +337,7 @@ class InitiatedDAO(private val db: Database) { id = it.getLong("initiated_outgoing_batch_id"), messageId = it.getString("message_id"), creationDate = it.getLong("creation_date").asInstant(), - sum = it.getAmount("sum", currency), + sum = it.getAmount("sum", db.currency), payments = emptyList() ) } @@ -363,7 +363,7 @@ class InitiatedDAO(private val db: Database) { all { val payment = InitiatedPayment( id = it.getLong("initiated_outgoing_transaction_id"), - amount = it.getAmount("amount", currency), + amount = it.getAmount("amount", db.currency), creditor = it.getIbanPayto("credit_payto"), subject = it.getString("subject"), initiationTime = it.getLong("initiation_time").asInstant(), diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/db/ListDAO.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/db/ListDAO.kt @@ -61,7 +61,7 @@ class ListDAO(private val db: Database) { it.getString("acct_svcr_ref"), ), date = it.getLong("execution_time").asInstant(), - amount = it.getDecimal("amount"), + amount = it.getAmount("amount", db.currency), creditFee = it.getDecimal("credit_fee"), subject = it.getString("subject"), debtor = it.getString("debit_payto"), @@ -102,7 +102,7 @@ class ListDAO(private val db: Database) { acctSvcrRef = it.getString("acct_svcr_ref"), ), date = it.getLong("execution_time").asInstant(), - amount = it.getDecimal("amount"), + amount = it.getAmount("amount", db.currency), subject = it.getString("subject"), creditor = it.getString("credit_payto"), wtid = it.getBytes("wtid")?.run { ShortHashCode(this) }, @@ -134,7 +134,7 @@ class ListDAO(private val db: Database) { all { InitiatedTxMetadata( date = it.getLong("initiation_time").asInstant(), - amount = it.getDecimal("amount"), + amount = it.getAmount("amount", db.currency), subject = it.getString("subject"), creditor = it.getString("credit_payto"), id = it.getString("end_to_end_id"), @@ -152,7 +152,7 @@ class ListDAO(private val db: Database) { data class IncomingTxMetadata( val id: IncomingId, val date: Instant, - val amount: DecimalNumber, + val amount: TalerAmount, val creditFee: DecimalNumber, val subject: String?, val debtor: String?, @@ -164,7 +164,7 @@ data class IncomingTxMetadata( data class OutgoingTxMetadata( val id: OutgoingId, val date: Instant, - val amount: DecimalNumber, + val amount: TalerAmount, val subject: String?, val creditor: String?, val wtid: ShortHashCode?, @@ -174,7 +174,7 @@ data class OutgoingTxMetadata( /** Initiated metadata for debugging */ data class InitiatedTxMetadata( val date: Instant, - val amount: DecimalNumber, + val amount: TalerAmount, val subject: String, val creditor: String, val id: String, diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/db/PaymentDAO.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/db/PaymentDAO.kt @@ -207,8 +207,8 @@ class PaymentDAO(private val db: Database) { RevenueIncomingBankTransaction( row_id = it.getLong("incoming_transaction_id"), date = it.getTalerTimestamp("execution_time"), - amount = it.getAmount("amount", db.bankCurrency), - credit_fee = it.getAmount("credit_fee", db.bankCurrency).notZeroOrNull(), + amount = it.getAmount("amount", db.currency), + credit_fee = it.getAmount("credit_fee", db.currency).notZeroOrNull(), debit_account = it.getString("debit_payto"), subject = it.getString("subject") ) diff --git a/nexus/src/test/kotlin/DatabaseTest.kt b/nexus/src/test/kotlin/DatabaseTest.kt @@ -435,7 +435,7 @@ class PaymentInitiationsTest { one { assertTrue(it.getBoolean(1)) } } // Run test - lambda(db.initiated.submittable("").find { it.messageId == "BATCH" }!!.id) + lambda(db.initiated.submittable().find { it.messageId == "BATCH" }!!.id) // Check witness status is unaltered db.serializable( """ @@ -538,7 +538,7 @@ class PaymentInitiationsTest { suspend fun checkIds(vararg ids: String) { assertEquals( listOf(*ids), - db.initiated.submittable("KUDOS").flatMap { it.payments.map { it.endToEndId } } + db.initiated.submittable().flatMap { it.payments.map { it.endToEndId } } ) } checkIds("PAY0", "PAY1", "PAY2", "PAY3", "PAY4", "PAY5") diff --git a/nexus/src/test/kotlin/Iso20022Test.kt b/nexus/src/test/kotlin/Iso20022Test.kt @@ -42,23 +42,23 @@ class Iso20022Test { bic = "BIC", name = "myname" ), - sum = TalerAmount("EUR:47.32"), + sum = TalerAmount("CHF:47.32"), txs = listOf( Pain001Tx( creditor = creditor, - amount = TalerAmount("EUR:42"), + amount = TalerAmount("CHF:42"), subject = "Test 42", endToEndId = "TX_FIRST" ), Pain001Tx( creditor = creditor, - amount = TalerAmount("EUR:5.11"), + amount = TalerAmount("CHF:5.11"), subject = "Test 5.11", endToEndId = "TX_SECOND" ), Pain001Tx( creditor = creditor, - amount = TalerAmount("EUR:0.21"), + amount = TalerAmount("CHF:0.21"), subject = "Test 0.21", endToEndId = "TX_THIRD" ) diff --git a/nexus/src/test/kotlin/RegistrationTest.kt b/nexus/src/test/kotlin/RegistrationTest.kt @@ -42,7 +42,7 @@ class RegistrationTest { initiated.create(tx) } this.initiated.batch(Instant.now(), name) - val (batch) = this.initiated.submittable("EUR") + val (batch) = this.initiated.submittable() this.initiated.batchSubmissionSuccess(batch.id, Instant.now(), name.replace("BATCH", "ORDER")) tmp.add(batch) } @@ -126,8 +126,8 @@ class RegistrationTest { it.getString("tx_id"), it.getString("acct_svcr_ref"), ), - amount = it.getAmount("amount", this@check.bankCurrency), - creditFee = it.getAmount("credit_fee", this@check.bankCurrency).notZeroOrNull(), + amount = it.getAmount("amount", this@check.currency), + creditFee = it.getAmount("credit_fee", this@check.currency).notZeroOrNull(), subject = it.getString("subject"), executionTime = it.getLong("execution_time").asInstant(), debtor = it.getOptIbanPayto("debit_payto"), @@ -153,7 +153,7 @@ class RegistrationTest { all { OutgoingPayment( id = OutgoingId(null, it.getString("end_to_end_id"), it.getString("acct_svcr_ref")), - amount = it.getAmount("amount", this@check.bankCurrency), + amount = it.getAmount("amount", this@check.currency), subject = it.getString("subject"), executionTime = it.getLong("execution_time").asInstant(), creditor = it.getOptIbanPayto("credit_payto"), @@ -186,6 +186,7 @@ class RegistrationTest { )) val msg = batchToPain001Msg(cfg.ebics.account, batch).copy(timestamp = dateToInstant("2024-09-09"),) for (dialect in Dialect.entries) { + println(dialect) assertEquals( Path("sample/platform/${dialect}_pain001.xml").readText().replace("VERSION", VERSION), createPain001(msg, dialect).asUtf8()