From acc32ccc1650b99e03c390a87e71b0a85b073162 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Tue, 6 Sep 2022 19:58:35 +0200 Subject: Create a 3d model object --- src/routes/model.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/routes/model.rs (limited to 'src/routes/model.rs') diff --git a/src/routes/model.rs b/src/routes/model.rs new file mode 100644 index 0000000..b1d4cc2 --- /dev/null +++ b/src/routes/model.rs @@ -0,0 +1,39 @@ +use crate::errors::AppError; +use crate::models::{ + auth::Claims, + model::{Model, ModelCreate}, +}; +use axum::{routing::get, Json, Router}; + +/// Create routes for `/v1/models/` namespace +pub fn create_route() -> Router { + Router::new().route("/", get(list_models).post(create_model)) +} + +/// List models. +async fn list_models() -> Result>, AppError> { + let models = Model::list().await?; + + Ok(Json(models)) +} + +/// Create a model. Checks Authorization token +async fn create_model( + Json(payload): Json, + claims: Claims, +) -> Result, AppError> { + let model = Model::new( + payload.name, + payload.description, + payload.duration, + payload.height, + payload.weight, + payload.printer, + payload.material, + claims.user_id, + ); + + let model_new = Model::create(model).await?; + + Ok(Json(model_new)) +} -- cgit v1.2.3-71-g8e6c