1
0
Fork 0
mirror of https://gitlab.com/msrd0/gotham-restful.git synced 2025-02-23 13:02:28 +00:00
deprecated-gotham-restful/src/resource.rs

46 lines
1.3 KiB
Rust
Raw Normal View History

2019-09-27 15:35:02 +02:00
use crate::{DrawResourceRoutes, ResourceResult};
2019-09-26 17:24:40 +02:00
use gotham::state::State;
2019-09-27 15:35:02 +02:00
use serde::de::DeserializeOwned;
2019-09-27 16:36:38 +02:00
use std::panic::RefUnwindSafe;
2019-09-26 17:24:40 +02:00
2019-09-27 16:36:38 +02:00
/// This trait must be implemented by every RESTful Resource. It will
/// allow you to register the different methods for this Resource.
2019-09-26 17:24:40 +02:00
pub trait Resource
{
2019-09-27 15:35:02 +02:00
fn setup<D : DrawResourceRoutes>(route : D);
2019-09-26 17:24:40 +02:00
}
2019-09-27 16:36:38 +02:00
/// Handle a GET request on the Resource root.
2019-09-28 13:38:08 +02:00
pub trait ResourceReadAll<R : ResourceResult>
2019-09-26 17:24:40 +02:00
{
2019-09-28 13:38:08 +02:00
fn read_all(state : &mut State) -> R;
2019-09-26 17:24:40 +02:00
}
2019-09-27 16:36:38 +02:00
/// Handle a GET request on the Resource with an id.
2019-09-28 13:38:08 +02:00
pub trait ResourceRead<ID, R : ResourceResult>
2019-09-27 16:36:38 +02:00
where
ID : DeserializeOwned + Clone + RefUnwindSafe + Send + Sync + 'static
2019-09-26 17:24:40 +02:00
{
2019-09-28 13:38:08 +02:00
fn read(state : &mut State, id : ID) -> R;
2019-09-26 17:24:40 +02:00
}
2019-09-27 16:36:38 +02:00
/// Handle a POST request on the Resource root.
2019-09-28 13:38:08 +02:00
pub trait ResourceCreate<Body : DeserializeOwned, R : ResourceResult>
2019-09-26 17:24:40 +02:00
{
2019-09-27 17:43:01 +02:00
fn create(state : &mut State, body : Body) -> R;
2019-09-26 17:24:40 +02:00
}
2019-09-27 21:33:24 +02:00
/// Handle a PUT request on the Resource root.
2019-09-28 13:38:08 +02:00
pub trait ResourceUpdateAll<Body : DeserializeOwned, R : ResourceResult>
2019-09-27 21:33:24 +02:00
{
2019-09-28 13:38:08 +02:00
fn update_all(state : &mut State, body : Body) -> R;
2019-09-27 21:33:24 +02:00
}
/// Handle a PUT request on the Resource with an id.
2019-09-28 13:38:08 +02:00
pub trait ResourceUpdate<ID, Body : DeserializeOwned, R : ResourceResult>
2019-09-27 21:33:24 +02:00
where
ID : DeserializeOwned + Clone + RefUnwindSafe + Send + Sync + 'static
{
2019-09-28 13:38:08 +02:00
fn update(state : &mut State, id : ID, body : Body) -> R;
2019-09-27 21:33:24 +02:00
}