diff --git a/Cargo.lock b/Cargo.lock index 2ec7f3f..3699eb2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -424,6 +424,7 @@ name = "db-frontend" version = "0.1.0" dependencies = [ "common", + "diesel", "yew", ] diff --git a/backend/src/driver_data.rs b/backend/src/driver_data.rs index d1c64e6..e06fedd 100644 --- a/backend/src/driver_data.rs +++ b/backend/src/driver_data.rs @@ -1,4 +1,6 @@ use diesel::prelude::*; +use diesel::pg::data_types::PgDate; +use common::CommonDriver; use crate::models::{Driver,NewDriver}; pub fn listdrivers(connection: &mut PgConnection) @@ -19,3 +21,19 @@ pub fn addriver(connection: &mut PgConnection, new_driver: NewDriver){ .execute(connection) .expect("Couldn't insert new driver :)"); } + +pub fn get_driver(connection: &mut PgConnection, driver_id: i32) -> CommonDriver { + use crate::schema::drivers::dsl::*; + let driver = &mut drivers + .filter(id.eq(driver_id)) + .limit(1) + .load::(connection) + .expect("no drivers :(")[0]; + return CommonDriver { + id: driver.id, + name: String::from(&driver.name), + address: String::from(&driver.address), + reg_date: &driver.regdate, + birthdate: String::from(&driver.birthdate), + }; +} \ No newline at end of file diff --git a/backend/src/models.rs b/backend/src/models.rs index c9b89c4..9fb5b38 100644 --- a/backend/src/models.rs +++ b/backend/src/models.rs @@ -83,8 +83,7 @@ pub struct Driver { #[derive(Insertable)] #[diesel(table_name = drivers)] -pub -struct NewDriver<'a> { +pub struct NewDriver<'a> { pub id: i32, pub name: &'a str, pub address: &'a str, diff --git a/common/src/lib.rs b/common/src/lib.rs index 38bde4f..3a5f98b 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -15,3 +15,13 @@ pub struct CommonAdmin { pub name: String, pub address: String, } + +#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)] +#[serde(rename_all = "camelCase")] +pub struct CommonDriver { + pub id: i32, + pub name: String, + pub address: String, + pub reg_date: i32, + pub birthdate: i32, +} \ No newline at end of file diff --git a/frontend/Cargo.toml b/frontend/Cargo.toml index 1cdee84..18ac030 100644 --- a/frontend/Cargo.toml +++ b/frontend/Cargo.toml @@ -8,3 +8,4 @@ edition = "2021" [dependencies] yew = { version = "0.20.0", features = ["csr"] } common = { path = "../common"} +diesel = { version = "2.0.0",features = ["postgres","r2d2"] } diff --git a/src/main.rs b/src/main.rs index c047ea3..c754135 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,9 +3,10 @@ use actix_web::{ web::{self, Json}, App, HttpServer, }; -use backend::{admin_data::get_admin, establish_connection, ticket_data::get_ticket}; +use backend::{establish_connection, admin_data::get_admin, ticket_data::get_ticket, driver_data::get_driver}; use common::CommonAdmin; use common::CommonTicket; +use common::CommonDriver; // //Admin Services // #[get("/api/admin/{id}")] @@ -20,8 +21,8 @@ use common::CommonTicket; //Ticket Table Services #[get("api/ticket/{id}")] async fn api_ticket(id: web::Path) -> Json { - let fetched_ticket = get_ticket(&mut establish_connection(), *id); - Json(fetched_ticket) + let fetched_ticket_data = get_ticket(&mut establish_connection(), *id); + Json(fetched_ticket_data) } // Getting admin data or smth idk @@ -31,9 +32,15 @@ async fn api_admin(id: web::Path) -> Json { Json(fetched_admin_data) } +#[get("api/driver/{id}")] +async fn api_driver(id: web::Path) -> Json { + let fetched_driver_data = get_driver(&mut establish_connection(), *id); + Json(fetched_driver_data) +} + #[actix_web::main] async fn main() -> std::io::Result<()> { - HttpServer::new(|| App::new().service(api_ticket).service(api_admin)) + HttpServer::new(|| App::new().service(api_ticket).service(api_admin).service(api_driver)) .bind(("0.0.0.0", 48590))? .run() .await