1
0
Fork 0
mirror of https://gitlab.com/msrd0/gotham-restful.git synced 2025-04-20 06:54:46 +00:00

add search method

This commit is contained in:
Dominic 2019-10-13 17:43:42 +02:00
parent 8429c425aa
commit 0153b2e22f
Signed by: msrd0
GPG key ID: DCC8C247452E98F9
8 changed files with 84 additions and 13 deletions

View file

@ -8,12 +8,14 @@ use crate::{
};
use futures::future::ok;
use gotham::{
extractor::QueryStringExtractor,
handler::{Handler, HandlerFuture, NewHandler},
helpers::http::response::create_response,
pipeline::chain::PipelineHandleChain,
router::builder::*,
state::State
};
use hyper::Body;
use indexmap::IndexMap;
use log::error;
use mime::{APPLICATION_JSON, TEXT_PLAIN};
@ -292,6 +294,22 @@ macro_rules! implOpenapiRouter {
(&mut *(self.0).0, self.1.to_string()).read::<Handler, ID, Res>()
}
fn search<Handler, Query, Res>(&mut self)
where
Query : ResourceType + QueryStringExtractor<Body> + Send + Sync + 'static,
Res : ResourceResult,
Handler : ResourceSearch<Query, Res>
{
let schema = (self.0).1.add_schema::<Res>();
let path = format!("/{}/search", &self.1);
let mut item = (self.0).1.remove_path(&self.1);
item.get = Some(new_operation(Res::default_status(), schema, vec![], None)); // TODO
(self.0).1.add_path(path, item);
(&mut *(self.0).0, self.1.to_string()).search::<Handler, Query, Res>()
}
fn create<Handler, Body, Res>(&mut self)
where
Body : ResourceType,