Documentation
use crate::curd_pgsql::common::UserModelRef;
use crate::curd_pgsql::common::{db_get, UserModel};
use sqlx_model::{Insert, ModelTableName};

#[tokio::test]
async fn curd_insert() {
    let db = db_get().await;

    // //---
    let nike_name = "new vec insert".to_string();
    let gender = 1;
    let userinsert = vec![sqlx_model::model_option_set!(UserModelRef,{
        nickname:nike_name,
        gender:gender,
    })];
    Insert::<sqlx::Postgres, UserModel, _>::new_vec(userinsert)
        .execute(&db)
        .await
        .unwrap();

    let userinsert = sqlx_model::model_option_set!(UserModelRef,{
        nickname:nike_name,
        gender:gender,
    });
    let tmp = Insert::<sqlx::Postgres, UserModel, _>::new(userinsert);
    let sql = {
        let table = UserModel::table_name();
        let vals = tmp.sql_values();
        let sql = format!(
            "INSERT INTO {} ({})VALUES {}",
            table.full_name(),
            tmp.fields.to_vec().join(","),
            vals.join(",")
        );
        sql
    };
    let i7 = sqlx::query(sql.as_str()).execute(&db).await.unwrap();
    assert_eq!(i7.rows_affected(), 1);

    let nike_name = "new insert 8".to_string();
    let gender = 1;
    let userinsert = sqlx_model::model_option_set!(UserModelRef,{
        nickname:nike_name,
        gender:gender,
    });
    let tmp = Insert::<sqlx::Postgres, UserModel, _>::new(userinsert);
    let sql = {
        let table = UserModel::table_name();
        let vals = tmp.sql_values();
        let sql = format!(
            "INSERT INTO {} ({})VALUES {}",
            table.full_name(),
            tmp.fields.to_vec().join(","),
            vals.join(",")
        );
        sql
    };
    let mut res = sqlx::query(sql.as_str());
    res = tmp.bind_values(res);
    let i8 = res.execute(&db).await.unwrap();
    assert_eq!(i8.rows_affected(), 1);
}