Skip to content
Snippets Groups Projects
Select Git revision
  • 6cfb3992a2efa4086d9b47aaec0eb24729928c8f
  • dev default protected
  • release/1.9.1 protected
  • pini-1.8-docker
  • pini-sync-onlypeers
  • duniter-v2s-issue-123-industrialize-releases
  • feature/build-aarch64-nodejs16
  • release/1.8 protected
  • pini-docker
  • ci_tags
  • fix/1448/1.8/txs_not_stored
  • feature/node-20
  • fix/1441/node_summary_with_storage
  • fix/1442/improve_bma_tx_history
  • feature/wotwizard-1.8
  • release/1.9 protected
  • 1.7 protected
  • feature/docker-set-latest protected
  • feature/fast-docker-build-1.8.4
  • fast-docker-build protected
  • feature/dump-distance
  • v1.8.7 protected
  • v1.8.7-rc4 protected
  • v1.8.7-rc3 protected
  • v1.8.7-rc2 protected
  • v1.8.7-rc1 protected
  • v1.8.6 protected
  • v1.7.23 protected
  • v1.8.5 protected
  • v1.8.4 protected
  • v1.8.3 protected
  • v1.8.2 protected
  • v1.8.1 protected
  • v1.8.0 protected
  • v1.8.0-rc1 protected
  • v1.8.0-beta5 protected
  • v1.8.0-beta4 protected
  • v1.8.0-beta3 protected
  • v1.8.0-beta2 protected
  • v1.8.0-beta protected
  • v1.7.21 protected
41 results

duniter.sh

Blame
  • queries.rs 1.29 KiB
    use graphql_client::GraphQLQuery;
    use serde::{Deserialize, Deserializer};
    
    // implementation of byte array
    #[derive(Debug, Clone)]
    pub struct Bytea {
    	pub bytes: Vec<u8>,
    }
    
    // Hasura uses lowercase type name
    #[allow(non_camel_case_types)]
    type bytea = Bytea;
    
    // implement deserializing \\x prefixed hexadecimal
    impl<'de> Deserialize<'de> for Bytea {
    	fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    	where
    		D: Deserializer<'de>,
    	{
    		// Deserialize as a string
    		let hex_string = String::deserialize(deserializer)?;
    		// Parse the hexadecimal string into a byte vector
    		let bytes = hex::decode(&hex_string[2..]).map_err(serde::de::Error::custom)?;
    		Ok(Bytea { bytes })
    	}
    }
    
    // generate code for given graphql query
    macro_rules! graphql_query {
    	($name:ident) => {
    		#[derive(GraphQLQuery)]
    		#[graphql(
    			schema_path = "res/indexer-schema.json",
    			query_path = "res/indexer-queries.graphql"
    		)]
    		pub struct $name;
    	};
    }
    
    // repeat generation for multiple queries
    macro_rules! graphql_query_for {
        ( $($Name:ident),+ ) => {
           $( graphql_query!($Name); )+
        };
    }
    
    // generate code for all queries in indexer-queries.graphql
    graphql_query_for!(
    	IdentityNameByIndex,
    	IdentityInfo,
    	IdentityNameByPubkey,
    	WasIdentityNameByPubkey,
    	LatestBlock,
    	BlockByNumber,
    	GenesisHash,
    	NamesByIndexes
    );