From 76a782599b4ecc4ecb9b0ce7acc6420ed9e1ec8e Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Tue, 20 Oct 2020 09:50:08 -0400 Subject: back to basics -- working on the most-required functionality first, like handlers --- dichroism/src/handlers.rs | 79 ++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 39 deletions(-) (limited to 'dichroism/src/handlers.rs') diff --git a/dichroism/src/handlers.rs b/dichroism/src/handlers.rs index f8f10d3..1f657c2 100644 --- a/dichroism/src/handlers.rs +++ b/dichroism/src/handlers.rs @@ -1,53 +1,54 @@ -use super::image_repo; -use super::product_repo; +//use super::product_repo; use super::types::DbPool; -use crate::config::Config; -use crate::image_api; -use actix_web::{get, post, web, Error, HttpResponse, Responder}; +//use crate::config::Config; +use actix_web::{get, patch, post, web, Error, HttpResponse, Responder}; #[get("/")] async fn hello() -> impl Responder { HttpResponse::Ok().body("Hey, this is an API!") } -#[get("/images")] -async fn get_images(pool: web::Data) -> Result { - let conn = pool.get().expect("Couldn't get DB connection from pool."); - let images = web::block(move || image_repo::read_images(&conn)) - .await - .map_err(|e| { - eprintln!("{}", e); - HttpResponse::InternalServerError().finish() - })?; - dbg!(&images); - Ok(HttpResponse::Ok().json(images)) +#[get("/products")] +async fn get_products(_pool: web::Data) -> Result { + dbg!("got products"); + Ok(HttpResponse::Ok().finish()) + //let conn = pool.get().expect("Couldn't get DB connection from pool."); + //let products = web::block(move || product_repo::read_products(&conn)) + // .await + // .map_err(|e| { + // eprintln!("{}", e); + // HttpResponse::InternalServerError().finish() + // })?; + //Ok(HttpResponse::Ok().json(products)) } -#[post("/images")] -async fn create_image(_config: web::Data, req_body: String) -> impl Responder { - // let data = match image_api::extract_data(&req_body) { - // Err(e) => return HttpResponse::BadRequest().body(format!("fail: {}", e.to_string())), - // Ok(d) => d, - // }; +#[patch("/products/{id}")] +async fn update_product( + _pool: web::Data, + id: web::Path, + updated_product: web::Json, +) -> Result { + dbg!(id, updated_product); + Ok(HttpResponse::Ok().finish()) +} - // if let Err(e) = image_api::generate_images(data) { - // return HttpResponse::BadRequest().body(format!( - // "Unable to extract image from data URI: {}", - // e.to_string() - // )); - // } +#[post("/products")] +async fn create_product( + _pool: web::Data, + new_product: web::Json, +) -> Result { + dbg!(new_product); + Ok(HttpResponse::Ok().finish()) +} - HttpResponse::Ok().body("Image created.") +#[derive(Debug, Deserialize)] +pub struct NewProduct { + pub name: String, + pub description: String, } -#[get("/products")] -async fn get_products(pool: web::Data) -> Result { - let conn = pool.get().expect("Couldn't get DB connection from pool."); - let products = web::block(move || product_repo::read_products(&conn)) - .await - .map_err(|e| { - eprintln!("{}", e); - HttpResponse::InternalServerError().finish() - })?; - Ok(HttpResponse::Ok().json(products)) +#[derive(Debug, Deserialize)] +pub struct UpdatedProduct { + pub name: Option, + pub description: Option, } -- cgit v1.2.3