radars and vehicles

This commit is contained in:
LinlyBoi
2022-12-25 13:10:38 +02:00
parent 298b35af4c
commit f9dfb4bf64
11 changed files with 133 additions and 25 deletions

View File

@@ -92,8 +92,16 @@ pub struct NewDriver<'a> {
pub struct Vehicle { pub struct Vehicle {
pub model: Option<String>, pub model: Option<String>,
pub color: Option<String>, pub color: Option<String>,
pub chasse_num: i32, pub chasse_num: Option<i32>,
pub plate_num: String, pub plate_num: String,
pub vehicle_type: String, pub vehicle_type: String,
pub owner: i32, pub category: String,
pub owner: Option<String>,
}
#[derive(Queryable, AsChangeset)]
pub struct Radar {
pub id: i32,
pub category: Option<String>,
pub address: Option<String>,
} }

View File

@@ -0,0 +1,19 @@
use common::CommonRadar;
use diesel::prelude::*;
use diesel::PgConnection;
use crate::models::Radar;
pub fn get_radar(connection: &mut PgConnection, radar_id: i32) -> CommonRadar {
use crate::schema::radars::dsl::*;
let radar = &mut radars
.filter(id.eq(radar_id))
.limit(1)
.load::<Radar>(connection)
.expect("no radars :(")[0];
return CommonRadar {
id: radar.id,
category: radar.category.clone(),
address: radar.address.clone(),
};
}

View File

@@ -73,10 +73,9 @@ diesel::table! {
} }
diesel::table! { diesel::table! {
radars (serialnumber) { radars (id) {
serialnumber -> Int4, id -> Int4,
#[sql_name = "type"] category -> Nullable<Text>,
type_ -> Nullable<Text>,
address -> Nullable<Text>, address -> Nullable<Text>,
} }
} }

View File

@@ -0,0 +1,41 @@
use common::CommonVehicle;
use diesel::prelude::*;
use diesel::PgConnection;
use crate::models::Vehicle;
pub fn get_vehicle(connection: &mut PgConnection, vehicle_id: i32) -> CommonVehicle {
use crate::schema::vehicles::dsl::*;
let vehicle = &mut vehicles
.filter(plate_num.eq(vehicle_id))
.limit(1)
.load::<Vehicle>(connection)
.expect("no vehicles :(")[0];
return CommonVehicle {
model: vehicle.model.clone(),
color: vehicle.color.clone(),
chasse_num: vehicle.chasse_num,
plate_num: vehicle.plate_num.clone(),
vehicle_type: vehicle.vehicle_type.clone(),
category: vehicle.category.clone(),
owner: vehicle.owner,
};
}
pub fn insert_vehicle(connection: &mut PgConnection, vehicle: CommonVehicle) -> bool {
use crate::schema::vehicles::dsl::*;
//convert CommonVehicle to Vehicle
let vehicle = Vehicle {
model: vehicle.model,
color: vehicle.color,
chasse_num: vehicle.chasse_num,
plate_num: vehicle.plate_num,
vehicle_type: vehicle.vehicle_type,
category: vehicle.category,
owner: vehicle.owner,
};
diesel::insert_into(vehicles)
.values(&vehicle)
.execute(connection)
.is_ok()
}

View File

@@ -23,3 +23,24 @@ pub struct CommonDriver {
pub name: String, pub name: String,
pub address: String, pub address: String,
} }
//generate common radar struct
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct CommonRadar {
pub id: i32,
pub category: Option<String>,
pub address: Option<String>,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct CommonVehicle {
pub model: Option<String>,
pub category: String,
pub color: Option<String>,
pub chasse_num: Option<i32>,
pub plate_num: i32,
pub vehicle_type: String,
pub owner: Option<String>,
}

View File

@@ -204,6 +204,9 @@ function makeMutClosure(arg0, arg1, dtor, f) {
return real; return real;
} }
function __wbg_adapter_18(arg0, arg1, arg2) {
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h414630ac9216cad4(arg0, arg1, addHeapObject(arg2));
}
let stack_pointer = 32; let stack_pointer = 32;
@@ -212,7 +215,7 @@ function addBorrowedObject(obj) {
heap[--stack_pointer] = obj; heap[--stack_pointer] = obj;
return stack_pointer; return stack_pointer;
} }
function __wbg_adapter_18(arg0, arg1, arg2) { function __wbg_adapter_21(arg0, arg1, arg2) {
try { try {
wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h9380123c3ed0eddb(arg0, arg1, addBorrowedObject(arg2)); wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h9380123c3ed0eddb(arg0, arg1, addBorrowedObject(arg2));
} finally { } finally {
@@ -220,10 +223,6 @@ function __wbg_adapter_18(arg0, arg1, arg2) {
} }
} }
function __wbg_adapter_21(arg0, arg1, arg2) {
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h414630ac9216cad4(arg0, arg1, addHeapObject(arg2));
}
let cachedUint32Memory0 = new Uint32Array(); let cachedUint32Memory0 = new Uint32Array();
function getUint32Memory0() { function getUint32Memory0() {
@@ -616,12 +615,12 @@ function getImports() {
imports.wbg.__wbindgen_throw = function(arg0, arg1) { imports.wbg.__wbindgen_throw = function(arg0, arg1) {
throw new Error(getStringFromWasm0(arg0, arg1)); throw new Error(getStringFromWasm0(arg0, arg1));
}; };
imports.wbg.__wbindgen_closure_wrapper3547 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper4152 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 236, __wbg_adapter_18); const ret = makeMutClosure(arg0, arg1, 287, __wbg_adapter_18);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbindgen_closure_wrapper6208 = function(arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper4211 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 263, __wbg_adapter_21); const ret = makeMutClosure(arg0, arg1, 303, __wbg_adapter_21);
return addHeapObject(ret); return addHeapObject(ret);
}; };
@@ -659,7 +658,7 @@ function initSync(module) {
async function init(input) { async function init(input) {
if (typeof input === 'undefined') { if (typeof input === 'undefined') {
input = new URL('db-frontend-5a949c39a51fa2c9_bg.wasm', import.meta.url); input = new URL('db-frontend-c0621f030a0450bc_bg.wasm', import.meta.url);
} }
const imports = getImports(); const imports = getImports();

Binary file not shown.

View File

@@ -2,10 +2,10 @@
<meta charset="utf-8"> <meta charset="utf-8">
<title>Ze greatest</title> <title>Ze greatest</title>
<link rel="preload" href="/db-frontend-5a949c39a51fa2c9_bg.wasm" as="fetch" type="application/wasm" crossorigin=""> <link rel="preload" href="/db-frontend-c0621f030a0450bc_bg.wasm" as="fetch" type="application/wasm" crossorigin="">
<link rel="modulepreload" href="/db-frontend-5a949c39a51fa2c9.js"></head> <link rel="modulepreload" href="/db-frontend-c0621f030a0450bc.js"></head>
<body> <body>
<script type="module">import init from '/db-frontend-5a949c39a51fa2c9.js';init('/db-frontend-5a949c39a51fa2c9_bg.wasm');</script><script>(function () { <script type="module">import init from '/db-frontend-c0621f030a0450bc.js';init('/db-frontend-c0621f030a0450bc_bg.wasm');</script><script>(function () {
var protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; var protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
var url = protocol + '//' + window.location.host + '/_trunk/ws'; var url = protocol + '//' + window.location.host + '/_trunk/ws';
var poll_interval = 5000; var poll_interval = 5000;

View File

@@ -114,7 +114,9 @@ impl Component for RandomCommit {
</> </>
}, },
FetchState::Fetching => html! { "Fetching" }, FetchState::Fetching => html! { "Fetching" },
FetchState::Success(data) => html! { <p> {data} </p> }, FetchState::Success(data) => {
html! { <> <h2> {"Commit Header:"} </h2> {data}</> }
}
FetchState::Failed(err) => html! { err }, FetchState::Failed(err) => html! { err },
} }
} }
@@ -177,7 +179,7 @@ impl Component for Driver {
</> </>
}, },
FetchState::Fetching => html! { "Fetching" }, FetchState::Fetching => html! { "Fetching" },
FetchState::Success(data) => html! { <p> {data} </p> }, FetchState::Success(data) => html! { <> <h2> {"Driver"} </h2> {data} </> },
FetchState::Failed(err) => html! { err }, FetchState::Failed(err) => html! { err },
} }
} }
@@ -232,6 +234,7 @@ async fn fetch_driver(url: &'static str) -> Result<String, FetchError> {
let mut opts = RequestInit::new(); let mut opts = RequestInit::new();
opts.method("GET"); opts.method("GET");
opts.mode(RequestMode::Cors); //Cors is required for fetch to work opts.mode(RequestMode::Cors); //Cors is required for fetch to work
//initialise request //initialise request
let request = Request::new_with_str_and_init(url, &opts)?; let request = Request::new_with_str_and_init(url, &opts)?;
let window = gloo::utils::window(); let window = gloo::utils::window();

View File

@@ -8,8 +8,7 @@ use backend::{
admin_data::get_admin, driver_data::get_driver, establish_connection, ticket_data::get_ticket, admin_data::get_admin, driver_data::get_driver, establish_connection, ticket_data::get_ticket,
}; };
// use common::{CommonAdmin, CommonDriver, CommonTicket}; // use common::{CommonAdmin, CommonDriver, CommonTicket};
//Json goodies? NAHH
//Ticket Table Services
#[get("api/ticket/{id}")] #[get("api/ticket/{id}")]
async fn api_ticket(id: web::Path<i32>) -> impl Responder { async fn api_ticket(id: web::Path<i32>) -> impl Responder {
let fetched_ticket_data = get_ticket(&mut establish_connection(), *id); let fetched_ticket_data = get_ticket(&mut establish_connection(), *id);
@@ -69,6 +68,7 @@ async fn api_driver(id: web::Path<i32>) -> impl Responder {
fetched_driver_data.id fetched_driver_data.id
)) ))
} }
#[get("api/test")] #[get("api/test")]
async fn api_test() -> impl Responder { async fn api_test() -> impl Responder {
HttpResponse::Ok() HttpResponse::Ok()
@@ -81,5 +81,23 @@ async fn api_test() -> impl Responder {
)) ))
.insert_header(("content-type", "text/plain")) .insert_header(("content-type", "text/plain"))
.insert_header(("content-encoded", "gzip")) .insert_header(("content-encoded", "gzip"))
.body("My balls are on fire :(") .body("Alles gut")
}
#[get("api/vehicle/{id}")]
async fn api_vehicle(id: web::Path<String>) -> impl Responder {
let fetched_vehicle_data = get_vehicle(&mut establish_connection(), *id);
HttpResponse::Ok()
.content_type(ContentType::plaintext())
.insert_header(("Access-Control-Allow-Origin", "*"))
.insert_header(("content-type", "text/plain"))
.insert_header(("content-encoded", "gzip"))
.insert_header((
"Access-Control-Allow-Headers",
"Content-Type, Content-Length, User-Agent, X-Requested-With, Range, DNT ",
))
.body(format!(
"Vehicle ID: {}, Vehicle Model: {}, Vehicle Color: {}",
fetched_vehicle_data.plate_num, fetched_vehicle_data.model, fetched_vehicle_data.color
))
} }