mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-11-01 02:57:02 +08:00 
			
		
		
		
	feat: Add crate attribute to operation macro (#459)
This commit is contained in:
		| @ -255,42 +255,12 @@ fn find_properties(attr: &syn::Attribute) -> syn::Result<HashMap<String, Vec<Str | |||||||
|         Ok(syn::Meta::List(syn::MetaList { |         Ok(syn::Meta::List(syn::MetaList { | ||||||
|             ref path, |             ref path, | ||||||
|             paren_token: _, |             paren_token: _, | ||||||
|             mut nested, |             nested, | ||||||
|         })) => { |         })) => { | ||||||
|             path.get_ident().map(|i| i == "operation").ok_or_else(|| { |             path.get_ident().map(|i| i == "operation").ok_or_else(|| { | ||||||
|                 helpers::syn_error(path.span(), "Attribute 'operation' was not found") |                 helpers::syn_error(path.span(), "Attribute 'operation' was not found") | ||||||
|             })?; |             })?; | ||||||
|             let tracker = nested |             Ok(HashMap::from_iter(nested.iter().filter_map(find_value))) | ||||||
|                 .pop() |  | ||||||
|                 .ok_or_else(|| { |  | ||||||
|                     helpers::syn_error( |  | ||||||
|                         nested.span(), |  | ||||||
|                         "Invalid format of attributes. Expected format is ops=...,flow=...", |  | ||||||
|                     ) |  | ||||||
|                 })? |  | ||||||
|                 .into_value(); |  | ||||||
|             let operation = nested |  | ||||||
|                 .pop() |  | ||||||
|                 .ok_or_else(|| { |  | ||||||
|                     helpers::syn_error( |  | ||||||
|                         nested.span(), |  | ||||||
|                         "Invalid format of attributes. Expected format is ops=...,flow=...", |  | ||||||
|                     ) |  | ||||||
|                 })? |  | ||||||
|                 .into_value(); |  | ||||||
|             let o = find_value(&tracker).ok_or_else(|| { |  | ||||||
|                 helpers::syn_error( |  | ||||||
|                     tracker.span(), |  | ||||||
|                     "Invalid format of attributes. Expected format is ops=...,flow=...", |  | ||||||
|                 ) |  | ||||||
|             })?; |  | ||||||
|             let t = find_value(&operation).ok_or_else(|| { |  | ||||||
|                 helpers::syn_error( |  | ||||||
|                     operation.span(), |  | ||||||
|                     "Invalid format of attributes. Expected format is ops=...,flow=...", |  | ||||||
|                 ) |  | ||||||
|             })?; |  | ||||||
|             Ok(HashMap::from_iter([t, o])) |  | ||||||
|         } |         } | ||||||
|         _ => Err(helpers::syn_error( |         _ => Err(helpers::syn_error( | ||||||
|             attr.span(), |             attr.span(), | ||||||
| @ -315,6 +285,14 @@ pub fn operation_derive_inner(input: DeriveInput) -> syn::Result<proc_macro::Tok | |||||||
|             "Invalid properties. Property 'flow' was not found", |             "Invalid properties. Property 'flow' was not found", | ||||||
|         ) |         ) | ||||||
|     })?; |     })?; | ||||||
|  |     let current_crate = syn::Ident::new( | ||||||
|  |         &prop | ||||||
|  |             .get("crate") | ||||||
|  |             .map(|v| v.join("")) | ||||||
|  |             .unwrap_or_else(|| String::from("crate")), | ||||||
|  |         Span::call_site(), | ||||||
|  |     ); | ||||||
|  |  | ||||||
|     let trait_derive = flow.iter().map(|derive| { |     let trait_derive = flow.iter().map(|derive| { | ||||||
|         let derive: Derives = derive.to_owned().into(); |         let derive: Derives = derive.to_owned().into(); | ||||||
|         let fns = ops.iter().map(|t| { |         let fns = ops.iter().map(|t| { | ||||||
| @ -336,15 +314,14 @@ pub fn operation_derive_inner(input: DeriveInput) -> syn::Result<proc_macro::Tok | |||||||
|     }; |     }; | ||||||
|     let output = quote! { |     let output = quote! { | ||||||
|         const _: () = { |         const _: () = { | ||||||
|                 use crate::core::errors::RouterResult; |                 use #current_crate::core::errors::RouterResult; | ||||||
|                 use crate::core::payments::operations::{ |                 use #current_crate::core::payments::{PaymentData,operations::{ | ||||||
|                     ValidateRequest, |                     ValidateRequest, | ||||||
|                     PostUpdateTracker, |                     PostUpdateTracker, | ||||||
|                     GetTracker, |                     GetTracker, | ||||||
|                     UpdateTracker, |                     UpdateTracker, | ||||||
|                     PaymentData |                 }}; | ||||||
|                 }; |                 use #current_crate::types::{ | ||||||
|                 use crate::types::{ |  | ||||||
|                     VerifyRequestData, |                     VerifyRequestData, | ||||||
|                     PaymentsSyncData, |                     PaymentsSyncData, | ||||||
|                     PaymentsCaptureData, |                     PaymentsCaptureData, | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Kartikeya Hegde
					Kartikeya Hegde