df-db 0.1.7

This is an orm database mysql mssql sqlite
Documentation
#[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 {
        // env::set_current_dir("..").unwrap();
        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);
        // println!("{:#}", data);
        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();
        // let data = db().table("user_account")
        //     .where_and("nickname", "like", JsonValue::from("%B%"))
        //     .where_or("nickname", "like", JsonValue::from("%A%"))
        //     .where_or("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());
    }
}