Refactor
This commit is contained in:
1
src/routes/mod.rs
Normal file
1
src/routes/mod.rs
Normal file
@@ -0,0 +1 @@
|
||||
pub mod renner;
|
||||
36
src/routes/renner.rs
Normal file
36
src/routes/renner.rs
Normal file
@@ -0,0 +1,36 @@
|
||||
use actix_web::{get, web, web::Query, HttpResponse, Responder};
|
||||
use sqlx::{Pool, Mssql};
|
||||
use std::sync::Mutex;
|
||||
use serde::{Deserialize};
|
||||
|
||||
use crate::models::gerbil::Gerbil;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct RennerQueryParam {
|
||||
name: Option<String>,
|
||||
}
|
||||
|
||||
|
||||
#[get("/renner")]
|
||||
async fn renner(data: web::Data<Mutex<Pool<Mssql>>>, params: Query<RennerQueryParam>) -> impl Responder {
|
||||
let mut sql = String::from("SELECT name FROM renner");
|
||||
|
||||
let mut pairs = Vec::new();
|
||||
match ¶ms.name
|
||||
{
|
||||
Some(val) => pairs.push(format!("name='{0}'", val)),
|
||||
None => ()
|
||||
}
|
||||
if pairs.len() != 0
|
||||
{
|
||||
let ret = pairs.iter().skip(1).fold(String::from(&pairs[0]), |sum, x| {format!("{0} AND {1}", sum, x)});
|
||||
sql.push_str(&format!(" WHERE {}",ret));
|
||||
}
|
||||
println!("{}",sql);
|
||||
let data = data.lock().unwrap();
|
||||
let rows = sqlx::query_as::<_,Gerbil>(&sql)
|
||||
.fetch_all(&(*data))
|
||||
.await
|
||||
.expect("no connection to database");
|
||||
HttpResponse::Ok().json(rows)
|
||||
}
|
||||
Reference in New Issue
Block a user