use super::data;
use data::mysql::MysqlPoolConnect;
use data::base::ListData;
use mysql::params;
use mysql::prelude::Queryable;
pub fn test_mysql(){
match MysqlPoolConnect(3, 1) {
Ok(mut pool)=>{
let rows = vec![
ListData { id:12,name:Some("hello world".into()),
color:Some("测试颜色".into()),
name_and_color:Some("white".into()),
avatar:Some("/etc/pictures".into()),
zh_size:Some("34-43".into()),
u_size:Some("53-78".into()),
diff:100,
factory_name:Some("baidu".into()),
output:64,
input:89,
threshold:100,
input_date:Some("2024-11-29".into()),
output_date:Some("2024-11-29".into())},
];
println!("connect mysql service okay !!!");
println!("test struct ListData is okay?");
for it in rows.iter() { println!("{:?}",it);}
let result = pool.exec_batch(r"INSERT INTO INBOUND(id,name,color,name_and_color,avatar,zh_size,u_size,factory_name,input,input_date)
VALUES (:id,:name,:color,:name_and_color,:avatar,:zh_size,:u_size,:factory_name,:input,:input_date)",rows.iter().map(|p| params! {
"id" => p.id,
"name" => &p.name,
"color" => &p.color,
"name_and_color" => &p.name_and_color,
"avatar" => &p.avatar,
"zh_size" => &p.zh_size,
"u_size" => &p.u_size,
"factory_name" => &p.factory_name,
"input" => p.input,
"input_date" => &p.input_date
}));
match result {
Ok(_) => println!("Insert Into database Okay ... ..."),
Err(e) => println!("Insert Into database error {}",e)
}
},
Err(e) => {
eprintln!("Error:{}",e);
},
}
}
#[allow(dead_code)]
pub fn inbound_row_insert(rows:Vec<ListData>) -> Result<(),Error> {
let res;
match MysqlPoolConnect(3, 1){
Ok(mut pool) => {
let result = pool.exec_batch(r"INSERT INTO INBOUND(id,name,color,name_and_color,avatar,zh_size,u_size,factory_name,input,input_date)
VALUES (:id,:name,:color,:name_and_color,:avatar,:zh_size,:u_size,:factory_name,:input,:input_date)",rows.iter().map(|p| params! {
"id" => p.id,
"name" => &p.name,
"color" => &p.color,
"name_and_color" => &p.name_and_color,
"avatar" => &p.avatar,
"zh_size" => &p.zh_size,
"u_size" => &p.u_size,
"factory_name" => &p.factory_name,
"input" => p.input,
"input_date" => &p.input_date
}));
res = result;
},
Err(e) => {res = Err(e);}
};
res
}
#[macro_export]
macro_rules! params {
() => {};
(@to_pair $map:expr, $name:expr => $value:expr) => (
let entry = $map.entry(std::vec::Vec::<u8>::from($name));
if let std::collections::hash_map::Entry::Occupied(_) = entry {
panic!("Redefinition of named parameter `{}'", std::string::String::from_utf8_lossy(entry.key()));
} else {
entry.or_insert($crate::value::Value::from($value));
}
);
(@to_pair $map:expr, $name:ident) => (
let entry = $map.entry(stringify!($name).as_bytes().to_vec());
if let std::collections::hash_map::Entry::Occupied(_) = entry {
panic!("Redefinition of named parameter `{}'", std::string::String::from_utf8_lossy(entry.key()));
} else {
entry.or_insert($crate::value::Value::from($name));
}
);
(@expand $map:expr;) => {};
(@expand $map:expr; $name:expr => $value:expr, $($tail:tt)*) => {
params!(@to_pair $map, $name => $value);
params!(@expand $map; $($tail)*);
};
(@expand $map:expr; $name:expr => $value:expr $(, $tail:tt)*) => {
params!(@to_pair $map, $name => $value);
params!(@expand $map; $($tail)*);
};
(@expand $map:expr; $name:ident, $($tail:tt)*) => {
params!(@to_pair $map, $name);
params!(@expand $map; $($tail)*);
};
(@expand $map:expr; $name:ident $(, $tail:tt)*) => {
params!(@to_pair $map, $name);
params!(@expand $map; $($tail)*);
};
($i:ident, $($tail:tt)*) => {
{
let mut map: std::collections::HashMap<std::vec::Vec<u8>, $crate::value::Value, _> = std::default::Default::default();
params!(@expand (&mut map); $i, $($tail)*);
$crate::params::Params::Named(map)
}
};
($i:expr => $($tail:tt)*) => {
{
let mut map: std::collections::HashMap<std::vec::Vec<u8>, $crate::value::Value, _> = std::default::Default::default();
params!(@expand (&mut map); $i => $($tail)*);
$crate::params::Params::Named(map)
}
};
($i:ident) => {
{
let mut map: std::collections::HashMap<std::vec::Vec<u8>, $crate::value::Value, _> = std::default::Default::default();
params!(@expand (&mut map); $i);
$crate::params::Params::Named(map)
}
}
}
> 查询用了30ms 这不太能忍受,产生10w 条数据测试下… …