containers-read #7
@ -1,4 +1,4 @@
|
|||||||
use super::{ApiEndpoint, ApiResult, ApiSuccess, State};
|
use super::{ApiEndpoint, ApiError, ApiResult, ApiSuccess, State};
|
||||||
use crate::db;
|
use crate::db;
|
||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@ -9,6 +9,7 @@ use uuid::Uuid;
|
|||||||
|
|
||||||
pub fn setup_routes(mut route: tide::Route<Arc<State>>) {
|
pub fn setup_routes(mut route: tide::Route<Arc<State>>) {
|
||||||
route.at("/").get(ApiEndpoint(index));
|
route.at("/").get(ApiEndpoint(index));
|
||||||
|
route.at("/:id/").get(ApiEndpoint(read));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Queryable, Serialize)]
|
#[derive(Queryable, Serialize)]
|
||||||
@ -28,3 +29,22 @@ async fn index(req: tide::Request<Arc<State>>) -> ApiResult<Vec<Container>> {
|
|||||||
|
|
||||||
Ok(ApiSuccess::Ok(items))
|
Ok(ApiSuccess::Ok(items))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn read(req: tide::Request<Arc<State>>) -> ApiResult<Container> {
|
||||||
|
use db::schema::containers::dsl::*;
|
||||||
|
use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl};
|
||||||
|
|
||||||
|
let req_id: Uuid = req
|
||||||
|
.param("id")
|
||||||
|
.unwrap()
|
||||||
|
.try_into()
|
||||||
|
.map_err(|_| ApiError::NotFound)?;
|
||||||
|
|
||||||
|
let mut connection = req.state().db.get().unwrap();
|
||||||
|
|
||||||
|
let item: Container = containers
|
||||||
|
.filter(id.eq(req_id))
|
||||||
|
.first::<Container>(&mut connection)?;
|
||||||
|
|
||||||
|
Ok(ApiSuccess::Ok(item))
|
||||||
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
mod containers;
|
mod containers;
|
||||||
mod error;
|
mod error;
|
||||||
|
|
||||||
use error::{ApiEndpoint, ApiResult, ApiSuccess};
|
use error::{ApiEndpoint, ApiError, ApiResult, ApiSuccess};
|
||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user