Now using macaddr datatype and added test for adding devices and displaynames
All checks were successful
Build Project / test (push) Successful in 6m32s
All checks were successful
Build Project / test (push) Successful in 6m32s
This commit is contained in:
37
src/main.rs
37
src/main.rs
@@ -1,12 +1,15 @@
|
||||
use std::{env, process};
|
||||
|
||||
use crate::schemas::{TelemetryMessageFromDevice, ValueMessageFromDevice};
|
||||
use actix_web::{get, http::StatusCode, post, web, App, HttpResponse, HttpServer, Responder};
|
||||
use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder};
|
||||
use database::Database;
|
||||
use log::{debug, error, info};
|
||||
use log::{error, info};
|
||||
use sqlx::types::mac_address::MacAddress;
|
||||
use util::parse_mac_address;
|
||||
|
||||
mod database;
|
||||
mod schemas;
|
||||
mod util;
|
||||
|
||||
struct AppState {
|
||||
db: Database,
|
||||
@@ -19,7 +22,11 @@ async fn receive_telemetry(
|
||||
telemetry_message: web::Json<TelemetryMessageFromDevice>,
|
||||
) -> impl Responder {
|
||||
info!("POST - telementry - Processing device id {}", device_id);
|
||||
match data.db.create_device_if_not_exists(&device_id).await {
|
||||
let Ok(mac_converted) = parse_mac_address(&device_id) else {
|
||||
return HttpResponse::InternalServerError();
|
||||
};
|
||||
let mac_converted = MacAddress::from(mac_converted);
|
||||
match data.db.create_device_if_not_exists(&mac_converted).await {
|
||||
Ok(_) => {}
|
||||
Err(e) => {
|
||||
error!("Error creating new device: {}", e);
|
||||
@@ -27,7 +34,7 @@ async fn receive_telemetry(
|
||||
}
|
||||
};
|
||||
|
||||
match data.db.add_telemetry(&telemetry_message, &device_id).await {
|
||||
match data.db.add_telemetry(&telemetry_message, &mac_converted).await {
|
||||
Ok(_) => HttpResponse::Created(),
|
||||
Err(e) => {
|
||||
error!("adding Telemetry message to DB failed \n{}", e);
|
||||
@@ -39,7 +46,11 @@ async fn receive_telemetry(
|
||||
#[get("/telemetry/{device_id}")]
|
||||
async fn get_telemetry(device_id: web::Path<String>, data: web::Data<AppState>) -> impl Responder {
|
||||
info!("GET - telementry - Processing device id {}", device_id);
|
||||
let messages = match data.db.get_telemetry_for_id(&device_id).await {
|
||||
let Ok(mac_converted) = parse_mac_address(&device_id) else {
|
||||
return HttpResponse::InternalServerError().finish();
|
||||
};
|
||||
let mac_converted = MacAddress::from(mac_converted);
|
||||
let messages = match data.db.get_telemetry_for_id(&mac_converted).await {
|
||||
Ok(msgs) => msgs,
|
||||
Err(e) => {
|
||||
error!("Getting Telemetry Messages from DB failed \n{}", e);
|
||||
@@ -56,7 +67,11 @@ async fn receive_value(
|
||||
value_message: web::Json<ValueMessageFromDevice>,
|
||||
) -> impl Responder {
|
||||
info!("POST - value - Processing device id {}", device_id);
|
||||
match data.db.create_device_if_not_exists(&device_id).await {
|
||||
let Ok(mac_converted) = parse_mac_address(&device_id) else {
|
||||
return HttpResponse::InternalServerError();
|
||||
};
|
||||
let mac_converted = MacAddress::from(mac_converted);
|
||||
match data.db.create_device_if_not_exists(&mac_converted).await {
|
||||
Ok(_) => {}
|
||||
Err(e) => {
|
||||
error!("Error creating new device: {}", e);
|
||||
@@ -64,7 +79,7 @@ async fn receive_value(
|
||||
}
|
||||
};
|
||||
|
||||
match data.db.add_value(&value_message, &device_id).await {
|
||||
match data.db.add_value(&value_message, &mac_converted).await {
|
||||
Ok(_) => HttpResponse::Created(),
|
||||
Err(e) => {
|
||||
error!("adding Telemetry message to DB failed \n{}", e);
|
||||
@@ -76,7 +91,11 @@ async fn receive_value(
|
||||
#[get("/value/{device_id}")]
|
||||
async fn get_value(device_id: web::Path<String>, data: web::Data<AppState>) -> impl Responder {
|
||||
info!("GET - value - Processing device id {}", device_id);
|
||||
let messages = match data.db.get_values_for_id(&device_id).await {
|
||||
let Ok(mac_converted) = parse_mac_address(&device_id) else {
|
||||
return HttpResponse::InternalServerError().finish();
|
||||
};
|
||||
let mac_converted = MacAddress::from(mac_converted);
|
||||
let messages = match data.db.get_values_for_id(&mac_converted).await {
|
||||
Ok(msgs) => msgs,
|
||||
Err(e) => {
|
||||
error!("Getting Values from DB failed \n{}", e);
|
||||
@@ -108,7 +127,7 @@ async fn main() -> std::io::Result<()> {
|
||||
let db_url = match env::var("DATABASE_URL") {
|
||||
Ok(url) => url,
|
||||
Err(e) => {
|
||||
error!("Failed reading DATABASE_URL");
|
||||
error!("Failed reading DATABASE_URL: {e}");
|
||||
process::exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user