mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 00:49:42 +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 {
|
||||
ref path,
|
||||
paren_token: _,
|
||||
mut nested,
|
||||
nested,
|
||||
})) => {
|
||||
path.get_ident().map(|i| i == "operation").ok_or_else(|| {
|
||||
helpers::syn_error(path.span(), "Attribute 'operation' was not found")
|
||||
})?;
|
||||
let tracker = nested
|
||||
.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]))
|
||||
Ok(HashMap::from_iter(nested.iter().filter_map(find_value)))
|
||||
}
|
||||
_ => Err(helpers::syn_error(
|
||||
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",
|
||||
)
|
||||
})?;
|
||||
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 derive: Derives = derive.to_owned().into();
|
||||
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! {
|
||||
const _: () = {
|
||||
use crate::core::errors::RouterResult;
|
||||
use crate::core::payments::operations::{
|
||||
use #current_crate::core::errors::RouterResult;
|
||||
use #current_crate::core::payments::{PaymentData,operations::{
|
||||
ValidateRequest,
|
||||
PostUpdateTracker,
|
||||
GetTracker,
|
||||
UpdateTracker,
|
||||
PaymentData
|
||||
};
|
||||
use crate::types::{
|
||||
}};
|
||||
use #current_crate::types::{
|
||||
VerifyRequestData,
|
||||
PaymentsSyncData,
|
||||
PaymentsCaptureData,
|
||||
|
||||
Reference in New Issue
Block a user