use bson::doc;
use crate::core::error2::Result;
use crate::{core::auth0::Requestor, prelude2::*};
use crate::services::app_logs_service;
pub async fn upload_app_logs(
body: web::Bytes,
request: HttpRequest,
context: web::Data<AppContext>,
requestor: actix_web::web::ReqData<Requestor>,
) -> impl Responder {
let app_logs = match crate::commons::bytes_to_string(body.to_vec()) {
Ok(val) => val,
Err(e) => return request.json(200, R::failed(500, e.to_string())),
};
let _count =
app_logs_service::save_app_logs(context.mongo(), requestor.get_user(), &app_logs).await?;
request.json(200, R::ok(_count))
}
pub async fn upload_network_log(
body: web::Bytes,
request: HttpRequest,
context: web::Data<AppContext>,
requestor: actix_web::web::ReqData<Requestor>,
) -> impl Responder {
let locations = match crate::commons::bytes_to_string(body.to_vec()) {
Ok(val) => val,
Err(e) => return request.json(200, R::failed(500, e.to_string())),
};
let _count =
app_logs_service::save_network_log(context.mongo(), requestor.get_user(), &locations)
.await?;
request.json(200, R::ok(_count))
}
pub async fn upload_tasks_log(
body: web::Bytes,
request: HttpRequest,
context: web::Data<AppContext>,
requestor: actix_web::web::ReqData<Requestor>,
) -> impl Responder {
let locations = match crate::commons::bytes_to_string(body.to_vec()) {
Ok(val) => val,
Err(e) => return request.json(200, R::failed(500, e.to_string())),
};
let _count =
app_logs_service::save_tasks_log(context.mongo(), requestor.get_user(), &locations).await?;
request.json(200, R::ok(_count))
}
pub async fn filter_network_log(
form: actix_web::web::Form<HashMap<String, String>>,
request: HttpRequest,
context: web::Data<AppContext>,
_requestor: actix_web::web::ReqData<Requestor>,
) -> Result<HttpResponse> {
let _device_id = form.0.get("device_id");
let _tag = form.0.get("tag");
let skip = form
.0
.get("skip")
.map(|f| crate::commons::string_to_number::<u32>(f))
.unwrap_or(Ok(0))?;
let limit = form
.0
.get("limit")
.map(|f| crate::commons::string_to_number::<u32>(f))
.unwrap_or(Ok(1))?;
let pagation = (skip, limit);
let mut filter = doc! {};
if let Some(tag) = _tag {
filter.insert("tag", tag);
}
if let Some(device_id) = _device_id {
filter.insert("device_id", device_id);
}
let result = app_logs_service::filter_network_log(context.mongo(), filter, pagation).await?;
request.json(200, R::ok(result))
}