mirror of
https://gitlab.com/msrd0/gotham-restful.git
synced 2025-02-23 04:52:28 +00:00
default to NoContent when method has no return type
This commit is contained in:
parent
5a62af6319
commit
a28ccb98f1
2 changed files with 17 additions and 15 deletions
|
@ -49,38 +49,33 @@ fn read(_state : &mut State, id : u64) -> Success<User>
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rest_create(Users)]
|
#[rest_create(Users)]
|
||||||
fn create(_state : &mut State, body : User) -> NoContent
|
fn create(_state : &mut State, body : User)
|
||||||
{
|
{
|
||||||
info!("Created User: {}", body.username);
|
info!("Created User: {}", body.username);
|
||||||
().into()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rest_update_all(Users)]
|
#[rest_update_all(Users)]
|
||||||
fn update_all(_state : &mut State, body : Vec<User>) -> NoContent
|
fn update_all(_state : &mut State, body : Vec<User>)
|
||||||
{
|
{
|
||||||
info!("Changing all Users to {:?}", body.into_iter().map(|u| u.username).collect::<Vec<String>>());
|
info!("Changing all Users to {:?}", body.into_iter().map(|u| u.username).collect::<Vec<String>>());
|
||||||
().into()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rest_update(Users)]
|
#[rest_update(Users)]
|
||||||
fn update(_state : &mut State, id : u64, body : User) -> NoContent
|
fn update(_state : &mut State, id : u64, body : User)
|
||||||
{
|
{
|
||||||
info!("Change User {} to {}", id, body.username);
|
info!("Change User {} to {}", id, body.username);
|
||||||
().into()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rest_delete_all(Users)]
|
#[rest_delete_all(Users)]
|
||||||
fn delete_all(_state : &mut State) -> NoContent
|
fn delete_all(_state : &mut State)
|
||||||
{
|
{
|
||||||
info!("Delete all Users");
|
info!("Delete all Users");
|
||||||
().into()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rest_delete(Users)]
|
#[rest_delete(Users)]
|
||||||
fn delete(_state : &mut State, id : u64) -> NoContent
|
fn delete(_state : &mut State, id : u64)
|
||||||
{
|
{
|
||||||
info!("Delete User {}", id);
|
info!("Delete User {}", id);
|
||||||
().into()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const ADDR : &str = "127.0.0.1:18080";
|
const ADDR : &str = "127.0.0.1:18080";
|
||||||
|
|
|
@ -59,9 +59,9 @@ pub fn expand_method(method : Method, attrs : TokenStream, item : TokenStream) -
|
||||||
let ident = parse_macro_input!(attrs as Ident);
|
let ident = parse_macro_input!(attrs as Ident);
|
||||||
let fun = parse_macro_input!(item as ItemFn);
|
let fun = parse_macro_input!(item as ItemFn);
|
||||||
|
|
||||||
let ret = match fun.sig.output {
|
let (ret, is_no_content) = match fun.sig.output {
|
||||||
ReturnType::Default => quote!(()),
|
ReturnType::Default => (quote!(::gotham_restful::NoContent), true),
|
||||||
ReturnType::Type(_, ty) => quote!(#ty)
|
ReturnType::Type(_, ty) => (quote!(#ty), false)
|
||||||
};
|
};
|
||||||
let args : Vec<(TokenStream2, TokenStream2)> = fun.sig.inputs.iter().map(|arg| match arg {
|
let args : Vec<(TokenStream2, TokenStream2)> = fun.sig.inputs.iter().map(|arg| match arg {
|
||||||
FnArg::Typed(arg) => {
|
FnArg::Typed(arg) => {
|
||||||
|
@ -79,7 +79,11 @@ pub fn expand_method(method : Method, attrs : TokenStream, item : TokenStream) -
|
||||||
}
|
}
|
||||||
generics.push(quote!(#ret));
|
generics.push(quote!(#ret));
|
||||||
let args : Vec<TokenStream2> = args.into_iter().map(|(pat, ty)| quote!(#pat : #ty)).collect();
|
let args : Vec<TokenStream2> = args.into_iter().map(|(pat, ty)| quote!(#pat : #ty)).collect();
|
||||||
let block = fun.block;
|
let block = fun.block.stmts;
|
||||||
|
let ret_stmt = match is_no_content {
|
||||||
|
true => Some(quote!(().into())),
|
||||||
|
false => None
|
||||||
|
};
|
||||||
|
|
||||||
let trait_ident = method.trait_ident();
|
let trait_ident = method.trait_ident();
|
||||||
let fn_ident = method.fn_ident();
|
let fn_ident = method.fn_ident();
|
||||||
|
@ -89,7 +93,10 @@ pub fn expand_method(method : Method, attrs : TokenStream, item : TokenStream) -
|
||||||
where #ident : ::gotham_restful::Resource
|
where #ident : ::gotham_restful::Resource
|
||||||
{
|
{
|
||||||
fn #fn_ident(#(#args),*) -> #ret
|
fn #fn_ident(#(#args),*) -> #ret
|
||||||
#block
|
{
|
||||||
|
#(#block)*
|
||||||
|
#ret_stmt
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
output.into()
|
output.into()
|
||||||
|
|
Loading…
Add table
Reference in a new issue