device.rs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. use crate::AppState;
  2. use super::{JsonBack};
  3. use super::{token_fail,check_login, errcode0};
  4. use crate::datasource::{Datasource, SqliteParams};
  5. use axum::{Json,extract::State};
  6. #[derive(serde::Deserialize)]
  7. pub struct Dedit{
  8. token: String,
  9. id: u64,
  10. name: Option<String>,
  11. area0: Option<u64>,
  12. area1: Option<u64>,
  13. }
  14. pub async fn d_edit(
  15. State(state): State<AppState>,
  16. Json(u): axum::extract::Json<Dedit>
  17. ) -> Json<JsonBack> {
  18. match check_login(&state, u.token).await {
  19. Ok(_) => {},
  20. Err(_) => {
  21. return token_fail();
  22. }
  23. }
  24. let mut params: SqliteParams = vec![Box::new(0)];
  25. match state.db_lite.execute(format!("update device set isdelete=?{}{}{} where id=?",
  26. if let Some(filter) = u.name {params.push(Box::new(filter));", name=?"} else {""},
  27. if let Some(filter) = u.area0 {params.push(Box::new(filter));", name=?"} else {""},
  28. if let Some(filter) = u.area1 {params.push(Box::new(filter));", name=?"} else {""},
  29. ).as_str(), rusqlite::params_from_iter({params.push(Box::new(u.id));params})).await{
  30. Ok(_) => {},
  31. Err(_) => {
  32. return Json(JsonBack{errcode: 3000, errmsg: Some("更新失败".to_string())});
  33. }
  34. }
  35. errcode0()
  36. }