v1.8.24
- CRUDEnable macro Generate cleaner table columns,for example: "id,name,age".to_string()
- support custom py lang,for example:
#[derive(Debug)]
pub struct MyNode {}
impl RbatisAST for MyNode {
fn eval(&self, convert: &DriverType, env: &mut Value, engine: &RbatisEngine, arg_result: &mut Vec<Value>) -> Result<String, Error> {
Ok(" AND id = 1 ".to_string())
}
}
pub struct MyGen {}
impl CustomNodeGenerate for MyGen {
fn generate(&self, express: &str, child_nodes: Vec<NodeType>) -> Result<Option<CustomNode>, Error> {
if express.starts_with("custom") {
return Ok(Option::from(CustomNode::from(MyNode {}, child_nodes)));
}
//skip
return Ok(None);
}
}
//示例-Rbatis扩展py风格的语法
#[async_std::test]
pub async fn test_py_sql_custom() {
fast_log::init_log("requests.log",
1000,
log::Level::Info,
None,
true);
let mut rb = Rbatis::new();
rb.link(MYSQL_URL).await.unwrap();
rb.py.add_gen(MyGen {});
let py = "
SELECT * FROM biz_activity
WHERE delete_flag = 0
custom :
";
let data: Page<BizActivity> = rb.py_fetch_page("", py, &json!({}), &PageRequest::new(1, 20)).await.unwrap();
println!("{}", serde_json::to_string(&data).unwrap());
}
//[rbatis] [] Query ==> SELECT count(1) FROM biz_activity WHERE delete_flag = 0 AND id = 1