use proc_macro2::TokenStream;
use quote::quote;
use syn::{Data, DeriveInput};
pub fn derive_struct(input: &DeriveInput) -> TokenStream {
let &DeriveInput {
ident,
data,
..
} = &input;
let Data::Struct(data) = data else { panic!("Only Structs are supported") };
match &data.fields {
syn::Fields::Named(fields) => {
let _field_names = fields.named.iter().map(|f| &f.ident);
let functions: Vec<TokenStream> = vec![
];
let parse_args_impl_tokens = quote!(
impl tailwag::web_service::traits::BuildRoutes for #ident {
#(#functions)*
}
);
parse_args_impl_tokens.into()
},
syn::Fields::Unnamed(_) => unimplemented!("Unnamed fields not supported yet"),
syn::Fields::Unit => unimplemented!("Unit fields not supported yet"),
}
}