Skip to content
Snippets Groups Projects
Select Git revision
  • d26d125664da1f1682208fc2971bc55f241d5c19
  • master default protected
  • network/gdev-800 protected
  • cgeek/issue-297-cpu
  • gdev-800-tests
  • update-docker-compose-rpc-squid-names
  • fix-252
  • 1000i100-test
  • hugo/tmp-0.9.1
  • network/gdev-803 protected
  • hugo/endpoint-gossip
  • network/gdev-802 protected
  • hugo/distance-precompute
  • network/gdev-900 protected
  • tuxmain/anonymous-tx
  • debug/podman
  • hugo/195-doc
  • hugo/195-graphql-schema
  • hugo-tmp-dockerfile-cache
  • release/client-800.2 protected
  • release/runtime-800 protected
  • gdev-900-0.10.1 protected
  • gdev-900-0.10.0 protected
  • gdev-900-0.9.2 protected
  • gdev-800-0.8.0 protected
  • gdev-900-0.9.1 protected
  • gdev-900-0.9.0 protected
  • gdev-803 protected
  • gdev-802 protected
  • runtime-801 protected
  • gdev-800 protected
  • runtime-800-bis protected
  • runtime-800 protected
  • runtime-800-backup protected
  • runtime-701 protected
  • runtime-700 protected
  • runtime-600 protected
  • runtime-500 protected
  • v0.4.1 protected
  • runtime-401 protected
  • v0.4.0 protected
41 results

replay-block.md

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
    );