mirror of
https://gitlab.com/msrd0/gotham-restful.git
synced 2025-05-09 16:10:42 +00:00
add delete resources
This commit is contained in:
parent
2e2cb1b787
commit
3626e5360c
4 changed files with 87 additions and 1 deletions
|
@ -65,6 +65,17 @@ pub trait DrawResourceRoutes
|
|||
Body : DeserializeOwned,
|
||||
Res : ResourceResult,
|
||||
Handler : ResourceUpdate<ID, Body, Res>;
|
||||
|
||||
fn delete_all<Handler, Res>(&mut self)
|
||||
where
|
||||
Res : ResourceResult,
|
||||
Handler : ResourceDeleteAll<Res>;
|
||||
|
||||
fn delete<Handler, ID, Res>(&mut self)
|
||||
where
|
||||
ID : DeserializeOwned + Clone + RefUnwindSafe + Send + Sync + 'static,
|
||||
Res : ResourceResult,
|
||||
Handler : ResourceDelete<ID, Res>;
|
||||
}
|
||||
|
||||
fn to_handler_future<F, R>(mut state : State, get_result : F) -> Box<HandlerFuture>
|
||||
|
@ -178,6 +189,27 @@ where
|
|||
handle_with_body::<Body, _, _>(state, |state, body| Handler::update(state, id, body))
|
||||
}
|
||||
|
||||
fn delete_all_handler<Handler, Res>(state : State) -> Box<HandlerFuture>
|
||||
where
|
||||
Res : ResourceResult,
|
||||
Handler : ResourceDeleteAll<Res>
|
||||
{
|
||||
to_handler_future(state, |state| Handler::delete_all(state))
|
||||
}
|
||||
|
||||
fn delete_handler<Handler, ID, Res>(state : State) -> Box<HandlerFuture>
|
||||
where
|
||||
ID : DeserializeOwned + Clone + RefUnwindSafe + Send + Sync + 'static,
|
||||
Res : ResourceResult,
|
||||
Handler : ResourceDelete<ID, Res>
|
||||
{
|
||||
let id = {
|
||||
let path : &PathExtractor<ID> = PathExtractor::borrow_from(&state);
|
||||
path.id.clone()
|
||||
};
|
||||
to_handler_future(state, |state| Handler::delete(state, id))
|
||||
}
|
||||
|
||||
macro_rules! implDrawResourceRoutes {
|
||||
($implType:ident) => {
|
||||
impl<'a, C, P> DrawResources for $implType<'a, C, P>
|
||||
|
@ -247,6 +279,26 @@ macro_rules! implDrawResourceRoutes {
|
|||
.with_path_extractor::<PathExtractor<ID>>()
|
||||
.to(|state| update_handler::<Handler, ID, Body, Res>(state));
|
||||
}
|
||||
|
||||
fn delete_all<Handler, Res>(&mut self)
|
||||
where
|
||||
Res : ResourceResult,
|
||||
Handler : ResourceDeleteAll<Res>
|
||||
{
|
||||
self.0.delete(&self.1)
|
||||
.to(|state| delete_all_handler::<Handler, Res>(state));
|
||||
}
|
||||
|
||||
fn delete<Handler, ID, Res>(&mut self)
|
||||
where
|
||||
ID : DeserializeOwned + Clone + RefUnwindSafe + Send + Sync + 'static,
|
||||
Res : ResourceResult,
|
||||
Handler : ResourceDelete<ID, Res>
|
||||
{
|
||||
self.0.delete(&format!("{}/:id", self.1))
|
||||
.with_path_extractor::<PathExtractor<ID>>()
|
||||
.to(|state| delete_handler::<Handler, ID, Res>(state));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue