From fc075ea55cf29304fdf197cd24c18689970015b5 Mon Sep 17 00:00:00 2001 From: Pratik Tripathy Date: Tue, 1 Dec 2020 04:10:21 +0530 Subject: [PATCH] Better file org --- src/api/mod.rs | 0 src/api/product_controller.rs | 0 src/{db.rs => config.rs} | 0 src/config/mod.rs | 0 src/models/mod.rs | 0 src/models/product.rs | 0 src/product/mod.rs | 5 ---- src/product/model.rs | 52 ----------------------------------- src/product/routes.rs | 20 -------------- src/schema.rs | 32 --------------------- src/{ => utils}/api_error.rs | 0 src/utils/mod.rs | 0 12 files changed, 109 deletions(-) create mode 100644 src/api/mod.rs create mode 100644 src/api/product_controller.rs rename src/{db.rs => config.rs} (100%) create mode 100644 src/config/mod.rs create mode 100644 src/models/mod.rs create mode 100644 src/models/product.rs delete mode 100644 src/product/mod.rs delete mode 100644 src/product/model.rs delete mode 100644 src/product/routes.rs delete mode 100644 src/schema.rs rename src/{ => utils}/api_error.rs (100%) create mode 100644 src/utils/mod.rs diff --git a/src/api/mod.rs b/src/api/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/api/product_controller.rs b/src/api/product_controller.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/db.rs b/src/config.rs similarity index 100% rename from src/db.rs rename to src/config.rs diff --git a/src/config/mod.rs b/src/config/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/models/mod.rs b/src/models/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/models/product.rs b/src/models/product.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/product/mod.rs b/src/product/mod.rs deleted file mode 100644 index a6f4b5c..0000000 --- a/src/product/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -mod model; -mod routes; - -pub use model::Product; -pub use routes::init_routes; \ No newline at end of file diff --git a/src/product/model.rs b/src/product/model.rs deleted file mode 100644 index 0fc56a4..0000000 --- a/src/product/model.rs +++ /dev/null @@ -1,52 +0,0 @@ -use crate::api_error::ApiError; -use crate::db; -use crate::schema::products; -use chrono::{NaiveDateTime, Utc}; -use diesel::prelude::*; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, AsChangeset)] -#[table_name = "products"] -pub struct ProductMessage { - pub productid: i32, - pub productname: String, -} - -#[derive(Serialize, Deserialize, Queryable, Insertable)] -#[table_name = "products"] -pub struct Product { - pub productid: i32, - pub productname: String, - pub created_at: NaiveDateTime -} - -impl Product { - pub fn find_all() -> Result, ApiError> { - let conn = db::connection()?; - - let products = products::table - .load::(&conn)?; - - Ok(products) - } - - pub fn find(id: i32) -> Result { - let conn = db::connection()?; - - let product = products::table - .filter(products::productid.eq(id)) - .first(&conn)?; - - Ok(product) - } -} - -impl From for Product { - fn from(product: ProductMessage) -> Self { - Product { - productid: product.productid, - productname: product.productname, - created_at: Utc::now().naive_utc(), - } - } -} \ No newline at end of file diff --git a/src/product/routes.rs b/src/product/routes.rs deleted file mode 100644 index 8aa3e68..0000000 --- a/src/product/routes.rs +++ /dev/null @@ -1,20 +0,0 @@ -// src/product/routes.rs -use crate::product::Product; -use actix_web::{get, post, web, HttpResponse, Responder}; - -#[get("/products")] -async fn find_all() -> impl Responder { - let products = Product::find_all().expect("Error fetching all Products"); - HttpResponse::Ok().json(products) -} - -#[get("/product/{id}")] -async fn find(id: web::Path) -> impl Responder { - let product = Product::find(id.into_inner()).expect("Error fetching Product"); - HttpResponse::Ok().json(product) -} - -pub fn init_routes(cfg: &mut web::ServiceConfig) { - cfg.service(find_all); - cfg.service(find); -} diff --git a/src/schema.rs b/src/schema.rs deleted file mode 100644 index 8a3c0a4..0000000 --- a/src/schema.rs +++ /dev/null @@ -1,32 +0,0 @@ -table! { - order_details (orderid, productid) { - orderid -> Int4, - productid -> Int4, - quantity -> Int4, - } -} - -table! { - orders (orderid) { - customer_email -> Text, - orderid -> Int4, - created_at -> Timestamp, - } -} - -table! { - products (productid) { - productid -> Int4, - productname -> Text, - created_at -> Timestamp, - } -} - -joinable!(order_details -> orders (orderid)); -joinable!(order_details -> products (productid)); - -allow_tables_to_appear_in_same_query!( - order_details, - orders, - products, -); diff --git a/src/api_error.rs b/src/utils/api_error.rs similarity index 100% rename from src/api_error.rs rename to src/utils/api_error.rs diff --git a/src/utils/mod.rs b/src/utils/mod.rs new file mode 100644 index 0000000..e69de29