use crate::parse::deps::*;
use proc_macro2::TokenStream;
use quote::{ToTokens, quote};
use super::dyn_error;
impl crate::codegen::CodegenWrapper<super::TransformerStruct> {
pub(crate) fn gen_from_impls(&self, token_stream: &mut TokenStream) {
let from_name = self.struct_name();
let to_name = self.graphql_output_name();
let from_fields = self.fields.iter().map(|f| &f.name);
let conversions = self.fields.iter().map(|f| &f.name);
let self_name = self.struct_name();
let block_fields = if self.is_entity() {
quote! {
__block_number_range: <<<<#self_name as ::cido::__internal::Transformer>::Cidomap as ::cido::__internal::Cidomap>::Network as ::cido::__internal::Network>::BlockNumberRange as ::cido::__internal::BlockNumberRange>::new(
<<<<#self_name as ::cido::__internal::Transformer>::Cidomap as ::cido::__internal::Cidomap>::Network as ::cido::__internal::Network>::BlockNumber as ::cido::__internal::BlockNumber>::MAX,
::core::option::Option::None
),
}
} else {
quote! {
__block_number: <<<<#self_name as ::cido::__internal::Transformer>::Cidomap as ::cido::__internal::Cidomap>::Network as ::cido::__internal::Network>::BlockNumber as ::cido::__internal::BlockNumber>::MAX,
}
};
let error_ty = dyn_error();
quote! {
impl ::core::convert::TryFrom<#from_name> for #to_name {
type Error = #error_ty;
fn try_from(this: #from_name) -> ::core::result::Result<Self, Self::Error> {
use ::core::convert::TryInto;
let #from_name {
#(#from_fields),*
} = this;
::core::result::Result::Ok(#to_name {
__query_block: <<<<#self_name as ::cido::__internal::Transformer>::Cidomap as ::cido::__internal::Cidomap>::Network as ::cido::__internal::Network>::BlockNumber as ::cido::__internal::BlockNumber>::MAX,
#block_fields
#(#conversions),*
})
}
}
}.to_tokens(token_stream);
}
}