From 9e7bd7fde0eb4370a78d1ab98ae95e017da1ad58 Mon Sep 17 00:00:00 2001 From: Jean-Marie PEDURAND <jm81@hotmail.fr> Date: Wed, 4 Dec 2019 22:11:13 +0100 Subject: [PATCH] [feat] gva: add previous_hash dividend field --- lib/dubp/block-doc/src/block.rs | 8 ++++++++ lib/dubp/block-doc/src/block/v10.rs | 3 +++ lib/modules/gva/resources/schema.gql | 2 ++ lib/modules/gva/src/schema/entities/block.rs | 15 +++++++++++++++ lib/modules/gva/src/schema/queries/block.rs | 6 +++++- lib/modules/gva/src/schema/queries/current.rs | 10 +++++++++- 6 files changed, 42 insertions(+), 2 deletions(-) diff --git a/lib/dubp/block-doc/src/block.rs b/lib/dubp/block-doc/src/block.rs index af8f61bf..59ced542 100644 --- a/lib/dubp/block-doc/src/block.rs +++ b/lib/dubp/block-doc/src/block.rs @@ -97,6 +97,8 @@ pub trait BlockDocumentTrait { fn unit_base(&self) -> usize; /// Get issuers_frame_var fn issuers_frame_var(&self) -> isize; + /// Get dividend + fn dividend(&self) -> Option<usize>; } impl BlockDocumentTrait for BlockDocument { @@ -238,6 +240,12 @@ impl BlockDocumentTrait for BlockDocument { BlockDocument::V10(block) => block.issuers_frame_var(), } } + #[inline] + fn dividend(&self) -> Option<usize> { + match self { + BlockDocument::V10(block) => block.dividend(), + } + } } impl Document for BlockDocument { diff --git a/lib/dubp/block-doc/src/block/v10.rs b/lib/dubp/block-doc/src/block/v10.rs index a48f949f..ba533c28 100644 --- a/lib/dubp/block-doc/src/block/v10.rs +++ b/lib/dubp/block-doc/src/block/v10.rs @@ -368,6 +368,9 @@ Transactions:{transactions} fn issuers_frame_var(&self) -> isize { self.issuers_frame_var } + fn dividend(&self) -> Option<usize> { + self.dividend + } } impl Document for BlockDocumentV10 { diff --git a/lib/modules/gva/resources/schema.gql b/lib/modules/gva/resources/schema.gql index cd222a90..46f131e4 100644 --- a/lib/modules/gva/resources/schema.gql +++ b/lib/modules/gva/resources/schema.gql @@ -91,6 +91,8 @@ type Block { unitBase: Int! issuersFrame: Int! issuersFrameVar: Int! + previousHash: String + dividend: Int } ################################# diff --git a/lib/modules/gva/src/schema/entities/block.rs b/lib/modules/gva/src/schema/entities/block.rs index 2b0036cd..d5630732 100644 --- a/lib/modules/gva/src/schema/entities/block.rs +++ b/lib/modules/gva/src/schema/entities/block.rs @@ -40,6 +40,8 @@ pub struct Block { unit_base: i32, issuers_frame: i32, issuers_frame_var: i32, + previous_hash: Option<String>, + dividend: Option<i32>, } impl Block { @@ -75,6 +77,8 @@ impl Block { unit_base: block_db.block.unit_base() as i32, issuers_frame: block_db.block.current_frame_size() as i32, issuers_frame_var: block_db.block.issuers_frame_var() as i32, + previous_hash: block_db.block.previous_hash().map(|hash| hash.to_string()), + dividend: block_db.block.dividend().map(|dividend| dividend as i32), }) } } @@ -138,4 +142,15 @@ impl super::super::BlockFields for Block { fn field_issuers_frame_var(&self, _executor: &Executor<'_, QueryContext>) -> FieldResult<&i32> { Ok(&self.issuers_frame_var) } + #[inline] + fn field_previous_hash( + &self, + _executor: &Executor<'_, QueryContext>, + ) -> FieldResult<&Option<String>> { + Ok(&self.previous_hash) + } + #[inline] + fn field_dividend(&self, _executor: &Executor<'_, QueryContext>) -> FieldResult<&Option<i32>> { + Ok(&self.dividend) + } } diff --git a/lib/modules/gva/src/schema/queries/block.rs b/lib/modules/gva/src/schema/queries/block.rs index d0630b97..78490318 100644 --- a/lib/modules/gva/src/schema/queries/block.rs +++ b/lib/modules/gva/src/schema/queries/block.rs @@ -73,6 +73,8 @@ mod tests { block.pow_min = 70; block.issuers_frame = 125; block.issuers_frame_var = 3; + block.previous_hash = Some(hash('C')); + block.dividend = Some(1032); Ok(Some(BlockDb { block: BlockDocument::V10(block), expire_certs: None, @@ -102,7 +104,7 @@ mod tests { tests::test_gql_query( schema, - "{ block(number: 42) { commonTime, currency, hash, issuer, issuerName, issuersCount, number, powMin, version, issuersFrame, issuersFrameVar } }", + "{ block(number: 42) { commonTime, currency, hash, issuer, issuerName, issuersCount, number, powMin, version, issuersFrame, issuersFrameVar, previousHash, dividend} }", json!({ "data": { "block": { @@ -117,6 +119,8 @@ mod tests { "version": 10, "issuersFrame": 125, "issuersFrameVar": 3, + "previousHash": "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "dividend": 1032, } } }), diff --git a/lib/modules/gva/src/schema/queries/current.rs b/lib/modules/gva/src/schema/queries/current.rs index 3b8775da..11439494 100644 --- a/lib/modules/gva/src/schema/queries/current.rs +++ b/lib/modules/gva/src/schema/queries/current.rs @@ -60,6 +60,10 @@ mod tests { current_block.pow_min = 70; current_block.members_count = 59; current_block.unit_base = 1; + current_block.issuers_frame = 155; + current_block.issuers_frame_var = -2; + current_block.previous_hash = Some(hash('C')); + current_block.dividend = Some(1072); Ok(Some(BlockDb { block: BlockDocument::V10(current_block), expire_certs: None, @@ -75,7 +79,7 @@ mod tests { tests::test_gql_query( schema, - "{ current { commonTime, currency, hash, issuer, issuerName, membersCount, number, powMin, version, unitBase } }", + "{ current { commonTime, currency, hash, issuer, issuerName, membersCount, number, powMin, version, unitBase, issuersFrameVar, issuersFrame, dividend, previousHash} }", json!({ "data": { "current": { @@ -89,6 +93,10 @@ mod tests { "powMin": 70, "version": 10, "unitBase": 1, + "issuersFrameVar": -2, + "issuersFrame": 155, + "dividend": 1072, + "previousHash": "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", } } }), -- GitLab