diff --git a/rust-libs/modules/gva/dbs-reader/src/lib.rs b/rust-libs/modules/gva/dbs-reader/src/lib.rs index 9f9edb2ab965e2f76fd86ed0c728e121d18f3062..5b8667c44ed5171980c5e1c7c7688a2071075f77 100644 --- a/rust-libs/modules/gva/dbs-reader/src/lib.rs +++ b/rust-libs/modules/gva/dbs-reader/src/lib.rs @@ -75,4 +75,15 @@ impl DbsReader { .uds_reval() .iter(.., |it| it.reverse().values().map_ok(|v| v.0).next_res()) } + + pub fn get_blockchain_time<GvaDb: GvaV1DbReadable>( + &self, + gva_db: &GvaDb, + block_number: BlockNumber, + ) -> anyhow::Result<u64> { + Ok(gva_db + .blockchain_time() + .get(&U32BE(block_number.0))? + .unwrap_or_else(|| unreachable!())) + } } diff --git a/rust-libs/modules/gva/src/lib.rs b/rust-libs/modules/gva/src/lib.rs index 9825d0db65582a900640bed3869fd9968768f236..61fa12ad2ddf02ba9acdfb8c4b8a36c3997b32ca 100644 --- a/rust-libs/modules/gva/src/lib.rs +++ b/rust-libs/modules/gva/src/lib.rs @@ -355,6 +355,13 @@ mod tests { &self, bc_db: &BcDb, ) -> KvResult<Option<SourceAmount>>; + fn get_blockchain_time< + GvaDb: 'static + GvaV1DbReadable, + >( + &self, + gva_db: &GvaDb, + block_number: BlockNumber, + ) -> anyhow::Result<u64>; } } pub type DbsReader = duniter_dbs::kv_typed::prelude::Arc<MockDbsReader>; diff --git a/rust-libs/modules/gva/src/queries/uds.rs b/rust-libs/modules/gva/src/queries/uds.rs index f6a4077fa22e5cb3efee743e4c1b1df5279bee17..e8252485e42780d5457d7886cd8747891f3831a8 100644 --- a/rust-libs/modules/gva/src/queries/uds.rs +++ b/rust-libs/modules/gva/src/queries/uds.rs @@ -15,7 +15,7 @@ use crate::*; use async_graphql::connection::*; -use duniter_dbs::{bc_v2::BcV2DbReadable, GvaV1DbReadable}; +use duniter_dbs::bc_v2::BcV2DbReadable; use duniter_gva_dbs_reader::{uds_of_pubkey::UdsWithSum, PagedData}; #[derive(Default)] @@ -54,7 +54,7 @@ impl UdsQuery { let pubkey = PublicKey::from_base58(&pubkey)?; let data = ctx.data::<SchemaData>()?; - //let dbs_reader = data.dbs_reader(); + let dbs_reader = data.dbs_reader(); let ( PagedData { @@ -88,14 +88,10 @@ impl UdsQuery { ) } }?; + let mut times = Vec::with_capacity(paged_data.data.uds.len()); for (bn, _sa) in &paged_data.data.uds { - times.push( - dbs.gva_db - .blockchain_time() - .get(&U32BE(bn.0))? - .unwrap_or_else(|| unreachable!()), - ); + times.push(dbs_reader.get_blockchain_time(&dbs.gva_db, *bn)?); } Ok::<_, anyhow::Error>((paged_data, times)) } else {