#[cfg(test)]
mod test {
use std::{env, fs};
use std::path::PathBuf;
use std::time::Instant;
use df_file::{dir_files, file_content_get_json};
use json::{array, JsonValue, object};
use df_db::db::{Db, ModeDb, Request};
use df_db::model::ModelTable;
fn db() -> ModeDb {
let dir = env::current_dir().unwrap();
let dir = dir.join("config");
let config_path = dir.join("db.json");
let conf = fs::read_to_string(config_path.to_str().unwrap()).unwrap();
let conf = json::parse(conf.as_str().clone()).unwrap();
Db::new(conf)
}
#[test]
fn update_test() {
let mut db = db();
let mut addlist = array![];
for _item in 0..10000 {
addlist.push(object! {code:1,quantity:10,amount:1.5}).unwrap();
}
let start = Instant::now();
db.table("admin_admin").insert_all(addlist);
let duration = start.elapsed().as_millis();
println!("ms:{}", duration);
}
#[test]
fn table_create() {
let root_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let sql_path = root_path.join("model");
let sql_path = sql_path.to_str().unwrap();
let db_path = root_path.join("config");
let db_path = db_path.join("db.json");
let db_path = db_path.to_str().unwrap();
let conf_db = file_content_get_json(db_path.clone());
let mut db = Db::new(conf_db);
let table_list = dir_files(format!("{}", sql_path.clone()).as_str());
for json in table_list {
let tables = file_content_get_json(&*json.clone());
let tables = ModelTable::parse(tables);
if db.table_is_exist(&*tables.table) {
db.table(&*tables.table).table_update(tables);
} else {
println!("安装数据表: {}", tables.table);
let res = db.table(&*tables.table).table_create(tables);
println!("安装结果: {}", res);
}
}
}
#[test]
fn update() {
let data = db().table("admin_admin").where_and("code", "=", 1.into()).update(object! {
batch:2
});
println!("{:#}", data);
}
#[test]
fn transaction() {
let mut db = db();
let data = db.transaction();
println!("{:#}", data);
let data = db.table("order_orderlist").delete();
println!("{:#}", data);
let data = db.rollback();
println!("{:#}", data);
}
#[test]
fn transactions() {
let mut db = db();
let data = db.transaction();
println!("{:#}", data);
let data = db.table("order_orderlist").delete();
println!("{:#}", data);
let data = db.commit();
println!("{:#}", data);
}
#[test]
fn count_count_count() {
let data = db().table("admin_admin").count();
println!("{:#}", data);
}
#[test]
fn select_1() {
let data = db().table("user_account").page(1, 25).select();
println!(">>>{:#}", data);
}
#[test]
fn select_where() {
let data = db().table("user_account").where_or("nickname|mail", "like", JsonValue::from("%A%")).select();
println!(">>>{:#}", data);
}
#[test]
fn select_where_between() {
let data = db().table("user_account").where_and("last_login_time", "between", array!["1674447406","1674447406"]).select();
println!(">>>{:#}", data);
}
#[test]
fn select_where_and() {
let data = db().table("user_account")
.where_or("nickname|mail", "like", JsonValue::from("%A%"))
.where_and("state", "in", JsonValue::from("正常"))
.select();
println!(">>>{:#}", data);
let data = db().table("user_account")
.where_or("nickname|mail", "like", JsonValue::from("%A%"))
.where_and("state", "in", JsonValue::from("正常,异常"))
.select();
println!(">>>{:#}", data);
let data = db().table("user_account")
.where_or("nickname|mail", "like", JsonValue::from("%A%"))
.where_and("state", "in", array!["正常","异常"])
.select();
println!(">>>{:#}", data);
}
#[test]
fn stmax() {
let data = db().table("admin_admin").delete();
println!("{:#}", data);
}
#[test]
fn table_where_and() {
let data = db()
.table("admin_admin")
.where_and("name", "=", "你的".into())
.select();
println!("{:#}", data);
}
#[test]
fn table_where_and_in() {
let data = db()
.table("admin_admin")
.where_and("unique_code", "in", array!["你的","我的"])
.select();
println!("{:#}", data);
}
#[test]
fn table_where_and_notin() {
let data = db()
.table("admin_admin")
.where_and("unique_code", "not in", array!["你的","我的"])
.select();
println!("{:#}", data);
}
#[test]
fn table_where_and_between() {
let data = db()
.table("admin_admin")
.where_and("quantity", "BETWEEN", array![3,5])
.select();
println!("{:#}", data);
}
#[test]
fn table_json() {
let data = db().table("admin_admin").select();
println!("{:#}", data);
}
#[test]
fn table_column() {
let data = db().table("admin_admin").column("code");
println!("{:#}", data);
}
#[test]
fn table_distinct() {
let data = db().table("admin_admin").distinct(true).field("code,quantity,barcode").order("amount", false).select();
println!("{:#}", data);
}
#[test]
fn table_group() {
let data = db().table("admin_admin").field("code,quantity,barcode").group("code").group("barcode").order("amount", false).sum("amount");
println!("{:#}", data);
}
#[test]
fn table_admin_admin_order() {
let data = db().table("admin_admin").field("code").order("code", false).select();
println!("{:#}", data);
}
#[test]
fn table_info() {
let data = db().table_info("admin_admin");
println!("{:#}", data);
}
#[test]
fn table_add() {
let mut addlist = array![];
for _item in 0..5 {
addlist.push(object! {code:1,quantity:10,amount:1.5}).unwrap();
}
for _item in 0..5 {
addlist.push(object! {code:2,quantity:2,amount:1.02}).unwrap();
}
let data = db().table("admin_admin").insert_all(addlist);
println!("{:#}", data);
}
#[test]
fn st() {
let data = db().table("acode").max("flags");
println!("{:#}", data);
}
#[test]
fn max() {
let data = db().table("test").max("number");
println!("{}", data);
}
#[test]
fn min() {
let data = db().table("test").min("number");
println!("{}", data);
}
#[test]
fn sum() {
let data = db().table("test").sum("number");
println!("{}", data);
}
#[test]
fn avg() {
let data = db().table("test").avg("number");
println!("{}", data);
}
#[test]
fn where_and() {
let data = db().table("test").where_and("name", "=", "123123".into()).count();
println!("{}", data);
}
#[test]
fn select() {
let data = db().table("test").page(1, 2).select();
assert_eq!(2, data.len());
}
#[test]
fn find() {
let data = db().table("test").find();
assert_eq!(5, data.len());
}
#[test]
fn insert() {
let item = object! {
name:"测试添加",
number:4443
};
let data = db().table("test").insert(item);
assert_eq!(1, data);
}
#[test]
fn insert_1() {
let item = object! {
"name":"测试商品",
"code":"编号",
"barcode":"条码",
"unique_code":"12312321312",
"quality_user":"张三李四",
"quality_date":"2023-01-01",
"out_date":"2023-01-01"
};
let data = db().table("goods_origin").insert(item);
assert_eq!(1, data);
}
#[test]
fn insert_all() {
let item = array![
object! {
name:"111",
phone:11231
},
object! {
name:"111",
phone:234534
}];
let data = db().table("user_user").insert_all(item);
println!("{}", data);
assert_eq!(2, data.len());
}
#[test]
fn insert_all_test() {
let mut list = array![];
for index in 0..20000 {
list[index] = object! {
name:index,
phone:11231
}
}
let mut db = db();
db.transaction();
let start = Instant::now();
let data = db.table("user_user").insert_all(list);
println!("ms:{}", start.elapsed().as_millis());
db.rollback();
println!("{}", data.len());
}
}