diff --git a/lib/dubp/block-doc/src/block.rs b/lib/dubp/block-doc/src/block.rs index 136f8ada96cd7ee5dd5c023fc966c41b77e659e4..8771259c8fa1d48dd624e3b5513a0f40787d61a8 100644 --- a/lib/dubp/block-doc/src/block.rs +++ b/lib/dubp/block-doc/src/block.rs @@ -78,6 +78,8 @@ pub trait BlockDocumentTrait { fn issuers_count(&self) -> UsizeSer32; /// Get number of members in wot fn members_count(&self) -> UsizeSer32; + /// Get amount of monetary mass + fn monetary_mass(&self) -> u64; /// Get block number fn number(&self) -> BlockNumber; /// Get common difficulty (PoW) @@ -170,6 +172,12 @@ impl BlockDocumentTrait for BlockDocument { } } #[inline] + fn monetary_mass(&self) -> u64 { + match self { + BlockDocument::V10(block) => block.monetary_mass(), + } + } + #[inline] fn common_time(&self) -> u64 { match self { BlockDocument::V10(block) => block.common_time(), diff --git a/lib/dubp/block-doc/src/block/v10.rs b/lib/dubp/block-doc/src/block/v10.rs index 024f1df2360663be2df37a130a38d2b59d5edd4b..4441db2fc6b36dc0207b395a56b62c8896671195 100644 --- a/lib/dubp/block-doc/src/block/v10.rs +++ b/lib/dubp/block-doc/src/block/v10.rs @@ -278,6 +278,9 @@ Transactions:{transactions} fn members_count(&self) -> UsizeSer32 { self.members_count } + fn monetary_mass(&self) -> u64 { + self.monetary_mass + } fn number(&self) -> BlockNumber { self.number } diff --git a/lib/modules/gva/resources/schema.gql b/lib/modules/gva/resources/schema.gql index 5779e610cf12bb9516fe9658f03245faa36dbce9..d2b5bb62387a51998f46b1ba50579a0874a41a84 100644 --- a/lib/modules/gva/resources/schema.gql +++ b/lib/modules/gva/resources/schema.gql @@ -84,6 +84,7 @@ type Block { issuerName: String, issuersCount: Int! membersCount: Int! + monetaryMass: Int!, number: Int! hash: String!, blockchainTime: DateTimeUtc! diff --git a/lib/modules/gva/src/schema/entities/block.rs b/lib/modules/gva/src/schema/entities/block.rs index 71c40e8d65d6417fa943926d8661ae47fe4ef957..3d6a2fd6db72da31ec409e0c87e684b3748d4d32 100644 --- a/lib/modules/gva/src/schema/entities/block.rs +++ b/lib/modules/gva/src/schema/entities/block.rs @@ -33,6 +33,7 @@ pub struct Block { issuer_name: Option<String>, issuers_count: i32, members_count: i32, + monetary_mass: i32, number: i32, hash: String, blockchain_time: NaiveDateTime, @@ -61,6 +62,7 @@ impl Block { }, issuers_count: block_db.block.issuers_count().into(), members_count: block_db.block.members_count().into(), + monetary_mass: block_db.block.monetary_mass() as i32, number: block_db.block.number().0 as i32, hash: block_db .block @@ -120,4 +122,8 @@ impl super::super::BlockFields for Block { fn field_members_count(&self, _executor: &Executor<'_, QueryContext>) -> FieldResult<&i32> { Ok(&self.members_count) } + #[inline] + fn field_monetary_mass(&self, _executor: &Executor<'_, QueryContext>) -> FieldResult<&i32> { + Ok(&self.monetary_mass) + } } diff --git a/lib/modules/gva/src/schema/queries/block.rs b/lib/modules/gva/src/schema/queries/block.rs index 3a85d335f9044b748ad420d03e8f3485d160b6d3..71260c998d5d2d62a9b56fc4eae854f575b4e617 100644 --- a/lib/modules/gva/src/schema/queries/block.rs +++ b/lib/modules/gva/src/schema/queries/block.rs @@ -71,6 +71,7 @@ mod tests { ); block.issuers = vec![pubkey('B')]; block.issuers_count = UsizeSer32(3); + block.monetary_mass = 5900; block.pow_min = UsizeSer32(70); Ok(Some(BlockDb { block: BlockDocument::V10(block), @@ -101,7 +102,7 @@ mod tests { tests::test_gql_query( schema, - "{ block(number: 42) { blockchainTime, currency, hash, issuer, issuerName, issuersCount, number, powMin, version } }", + "{ block(number: 42) { blockchainTime, currency, hash, issuer, issuerName, issuersCount, monetaryMass, number, powMin, version } }", json!({ "data": { "block": { @@ -111,6 +112,7 @@ mod tests { "issuer": "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "issuerName": "issuerName", "issuersCount": 3, + "monetaryMass": 5900, "number": 42, "powMin": 70, "version": 10