save data on backend

This commit is contained in:
2024-10-20 14:40:17 -07:00
parent e22245998f
commit 51af825b27
4 changed files with 178 additions and 96 deletions

View File

@@ -1,12 +1,10 @@
use crate::TelemetryDefinition;
use actix_web::http::header::ContentType;
use actix_web::http::StatusCode;
use actix_web::{error, get, web, App, HttpResponse, HttpServer, Responder};
use derive_more::{Display, Error};
use std::collections::HashMap;
use std::sync::Arc;
use log::trace;
use tokio::sync::Mutex;
use crate::telemetry::TelemetryManagementService;
#[derive(Debug, Display, Error)]
enum UserError {
@@ -28,18 +26,14 @@ impl error::ResponseError for UserError {
}
#[get("/tlm/{name:[\\w\\d/_-]+}")]
async fn get_tlm_definition(data: web::Data<Arc<Mutex<HashMap<String, TelemetryDefinition>>>>, name: web::Path<String>) -> Result<impl Responder, UserError> {
async fn get_tlm_definition(data: web::Data<Arc<TelemetryManagementService>>, name: web::Path<String>) -> Result<impl Responder, UserError> {
let string = name.to_string();
trace!("get_tlm_definition {}", string);
let data = data.lock().await;
let tlm_def = data.get(&string);
trace!("tlm_def {:?}", tlm_def.clone());
let Some(data) = data.get_by_name(&string).await else {
return Err(UserError::TlmNotFound { tlm: string });
};
if let Some(tlm_def) = tlm_def {
Ok(web::Json(tlm_def.clone()))
} else {
Err(UserError::TlmNotFound { tlm: string })
}
Ok(web::Json(data.definition.clone()))
}
fn setup_api(cfg: &mut web::ServiceConfig) {
@@ -47,7 +41,7 @@ fn setup_api(cfg: &mut web::ServiceConfig) {
.service(get_tlm_definition);
}
pub async fn setup(telemetry_definitions: Arc<Mutex<HashMap<String, TelemetryDefinition>>>) -> Result<(), Box<dyn Error>> {
pub async fn setup(telemetry_definitions: Arc<TelemetryManagementService>) -> Result<(), Box<dyn Error>> {
let data = web::Data::new(telemetry_definitions);
trace!("Starting HTTP Server");