commit b6fa249d91984d4504393ab1b5f482a01b980a05
parent 11086493c0f205cad03a085acef854fd92cd426c
Author: Florian Dold <dold@taler.net>
Date: Wed, 9 Sep 2026 01:37:31 +0200
bitcoin: use current taler-rust payment and timestamp APIs
Diffstat:
3 files changed, 31 insertions(+), 32 deletions(-)
diff --git a/depolymerizer-bitcoin/src/api.rs b/depolymerizer-bitcoin/src/api.rs
@@ -35,7 +35,7 @@ use taler_api::{
wire::WireGateway,
},
error::{ApiResult, failure_code, failure_status},
- subject::IncomingSubject,
+ subject::IncomingKey,
};
use taler_common::{
ExpoBackoffDecorr,
@@ -53,7 +53,7 @@ use taler_common::{
types::{
amount::{Amount, Currency},
payto::PaytoURI,
- timestamp::TalerTimestamp,
+ time::TalerTimestamp,
},
};
use tokio::{sync::watch::Sender, time::sleep};
@@ -136,7 +136,7 @@ async fn add_incoming(
db: &PgPool,
amount: Amount,
debit_account: PaytoURI,
- subject: &IncomingSubject,
+ subject: &IncomingKey,
) -> ApiResult<AddIncomingResponse> {
let debtor = FullBtcPayto::try_from(&debit_account)?;
match register_tx_in_admin(db, &amount, &debtor.0, &Timestamp::now(), subject).await? {
@@ -219,7 +219,7 @@ impl WireGateway for ServerState {
&self.pool,
req.amount,
req.debit_account,
- &IncomingSubject::Reserve(req.reserve_pub),
+ &IncomingKey::reserve(req.reserve_pub),
)
.await
}
@@ -229,7 +229,7 @@ impl WireGateway for ServerState {
&self.pool,
req.amount,
req.debit_account,
- &IncomingSubject::Kyc(req.account_pub),
+ &IncomingKey::kyc(req.account_pub),
)
.await
}
@@ -239,7 +239,7 @@ impl WireGateway for ServerState {
&self.pool,
req.amount,
req.debit_account,
- &IncomingSubject::Map(req.authorization_pub),
+ &IncomingKey::map(req.authorization_pub),
)
.await
}
diff --git a/depolymerizer-bitcoin/src/db.rs b/depolymerizer-bitcoin/src/db.rs
@@ -22,7 +22,7 @@ use sqlx::{PgConnection, PgExecutor, PgPool, QueryBuilder, Row, postgres::PgRow}
use taler_api::{
db::{BindHelper as _, TypeHelper as _, history, page},
serialized,
- subject::IncomingSubject,
+ subject::IncomingKey,
};
use taler_common::{
api::{
@@ -168,7 +168,7 @@ pub async fn transfer(
} else {
TransferResult::Success(TransferResponse {
row_id: r.try_get_u64("out_transfer_row_id")?,
- timestamp: r.try_get_taler_timestamp("out_created_at")?,
+ timestamp: r.try_get("out_created_at")?,
})
})
})
@@ -223,7 +223,7 @@ pub async fn transfer_page(
status: r.try_get::<DebitStatus, _>(1)?.into(),
amount: r.try_get_amount(2, currency)?,
credit_account: sql_payto(&r, 3, 4)?,
- timestamp: r.try_get_taler_timestamp(5)?,
+ timestamp: r.try_get(5)?,
})
},
)
@@ -262,7 +262,7 @@ pub async fn transfer_by_id(
wtid: r.try_get(4)?,
credit_account: sql_payto(&r, 5, 6)?,
metadata: r.try_get(7)?,
- timestamp: r.try_get_taler_timestamp(8)?,
+ timestamp: r.try_get(8)?,
})
})
.fetch_optional(db)
@@ -303,7 +303,7 @@ pub async fn outgoing_history(
|r| {
Ok(OutgoingBankTransaction {
row_id: r.try_get_u64(0)?,
- date: r.try_get_taler_timestamp(1)?,
+ date: r.try_get(1)?,
amount: r.try_get_amount(2, currency)?,
wtid: r.try_get(3)?,
credit_account: sql_payto(&r, 4, 5)?,
@@ -349,7 +349,7 @@ pub async fn incoming_history(
Ok(match r.try_get(4)? {
IncomingType::reserve => IncomingBankTransaction::Reserve {
row_id: r.try_get_u64(0)?,
- date: r.try_get_taler_timestamp(1)?,
+ date: r.try_get(1)?,
amount: r.try_get_amount(2, currency)?,
reserve_pub: r.try_get(5)?,
debit_account: sql_generic_payto(&r, 3)?,
@@ -359,7 +359,7 @@ pub async fn incoming_history(
},
IncomingType::kyc => IncomingBankTransaction::Kyc {
row_id: r.try_get_u64(0)?,
- date: r.try_get_taler_timestamp(1)?,
+ date: r.try_get(1)?,
amount: r.try_get_amount(2, currency)?,
account_pub: r.try_get(5)?,
debit_account: sql_generic_payto(&r, 3)?,
@@ -402,7 +402,7 @@ pub async fn revenue_history(
|r| {
Ok(RevenueIncomingBankTransaction {
row_id: r.try_get_u64(0)?,
- date: r.try_get_taler_timestamp(1)?,
+ date: r.try_get(1)?,
amount: r.try_get_amount(2, currency)?,
debit_account: sql_generic_payto(&r, 3)?,
credit_fee: None, // TODO store this
@@ -432,7 +432,7 @@ pub async fn register_tx_in_admin(
amount: &Amount,
debit_acc: &Address,
received: &Timestamp,
- metadata: &IncomingSubject,
+ metadata: &IncomingKey,
) -> sqlx::Result<AddIncomingResult> {
sqlx::query(
"
@@ -443,8 +443,8 @@ pub async fn register_tx_in_admin(
.bind(amount)
.bind(debit_acc.to_string())
.bind_timestamp(received)
- .bind(metadata.ty())
- .bind(metadata.key())
+ .bind(metadata.ty)
+ .bind(&metadata.key)
.try_map(|r: PgRow| {
Ok(if r.try_get_flag(0)? {
AddIncomingResult::ReservePubReuse
@@ -472,7 +472,7 @@ pub async fn register_tx_in<'a>(
amount: &Amount,
debit_acc: &Address,
received: &Timestamp,
- subject: &Option<IncomingSubject>,
+ subject: &Option<IncomingKey>,
) -> sqlx::Result<AddIncomingResult> {
sqlx::query(
"
@@ -484,8 +484,8 @@ pub async fn register_tx_in<'a>(
.bind(amount)
.bind(debit_acc.to_string())
.bind_timestamp(received)
- .bind(subject.as_ref().map(|it| it.ty()))
- .bind(subject.as_ref().map(|it| it.key()))
+ .bind(subject.as_ref().map(|it| it.ty))
+ .bind(subject.as_ref().map(|it| &it.key))
.try_map(|r: PgRow| {
Ok(if r.try_get_flag(0)? {
AddIncomingResult::ReservePubReuse
@@ -882,7 +882,7 @@ pub mod test {
};
use jiff::Span;
use sqlx::{PgPool, Postgres, pool::PoolConnection, postgres::PgRow};
- use taler_api::{db::TypeHelper as _, notification::dummy_listen, subject::IncomingSubject};
+ use taler_api::{db::TypeHelper as _, notification::dummy_listen, subject::IncomingKey};
use taler_common::{
api::{EddsaPublicKey, HashCode, ShortHashCode, params::History, wire::TransferRequest},
types::{
@@ -956,8 +956,7 @@ pub mod test {
let (mut db, pool) = setup().await;
let amount = amount("KUDOS:10");
- let mut routine = async |first: &Option<IncomingSubject>,
- second: &Option<IncomingSubject>| {
+ let mut routine = async |first: &Option<IncomingKey>, second: &Option<IncomingKey>| {
let id = sqlx::query("SELECT count(*) + 1 FROM tx_in")
.try_map(|r: PgRow| r.try_get_u64(0))
.fetch_one(&mut *db)
@@ -1026,15 +1025,15 @@ pub mod test {
// Reserve transaction
routine(
- &Some(IncomingSubject::Reserve(first)),
- &Some(IncomingSubject::Reserve(second)),
+ &Some(IncomingKey::reserve(first)),
+ &Some(IncomingKey::reserve(second)),
)
.await;
// Kyc transaction
routine(
- &Some(IncomingSubject::Kyc(first)),
- &Some(IncomingSubject::Kyc(first)),
+ &Some(IncomingKey::kyc(first)),
+ &Some(IncomingKey::kyc(first)),
)
.await;
@@ -1078,7 +1077,7 @@ pub mod test {
&amount,
&ADDR,
&now,
- &IncomingSubject::Reserve(EddsaPublicKey::rand())
+ &IncomingKey::reserve(EddsaPublicKey::rand())
)
.await
.expect("register tx in"),
@@ -1096,7 +1095,7 @@ pub mod test {
&amount,
&ADDR,
&later,
- &IncomingSubject::Reserve(EddsaPublicKey::rand())
+ &IncomingKey::reserve(EddsaPublicKey::rand())
)
.await
.expect("register tx in"),
@@ -1623,7 +1622,7 @@ pub mod test {
&amount,
&ADDR,
&now,
- &Some(IncomingSubject::Reserve(reserve_pub)),
+ &Some(IncomingKey::reserve(reserve_pub)),
)
.await
.unwrap();
diff --git a/depolymerizer-bitcoin/src/loops/worker.rs b/depolymerizer-bitcoin/src/loops/worker.rs
@@ -23,7 +23,7 @@ use sqlx::{
Acquire, Either, PgConnection, PgPool,
postgres::{PgAdvisoryLock, PgAdvisoryLockKey, PgListener},
};
-use taler_api::subject::IncomingSubject;
+use taler_api::subject::IncomingKey;
use taler_common::{ExpoBackoffDecorr, api::ShortHashCode, db::IncomingType};
use tokio::time::sleep;
use tracing::{debug, error, info, trace, warn};
@@ -363,7 +363,7 @@ async fn sync_chain_incoming_confirmed(
&amount,
&debit_addr,
&Timestamp::from_second(tx.time as i64).unwrap(),
- &Some(IncomingSubject::Reserve(reserve_pub)),
+ &Some(IncomingKey::reserve(reserve_pub)),
)
.await?
{