use crate::curd_mysql::common::db_mysql;
use crate::curd_mysql::common::UserModel;
use crate::curd_mysql::common::UserModelRef;
use sqlx::Acquire;
use sqlx::Transaction;
use sqlx_model::Insert;
#[tokio::test]
async fn curd_tran() {
let db = db_mysql().await;
test1(None).await;
let mut ta = db.begin().await.unwrap();
let str = "bbbb".to_string();
let userinsert = sqlx_model::model_option_set!(UserModelRef,{
nickname:str,
gender:11,
});
let i1 = Insert::<sqlx::MySql, UserModel, _>::new(userinsert)
.execute(&mut ta)
.await
.unwrap();
assert!(i1.last_insert_id() > 0);
test1(Some(&mut ta)).await;
let nike_name = "new vec tran".to_string();
let gender = 1;
let userinsert = vec![sqlx_model::model_option_set!(UserModelRef,{
nickname:nike_name,
gender:gender,
})];
let i2 = Insert::<sqlx::MySql, UserModel, _>::new_vec(userinsert)
.execute(&mut ta)
.await
.unwrap();
assert!(i2.last_insert_id() > 0);
ta.commit().await.unwrap();
}
async fn test1<'c>(ta: Option<&mut Transaction<'c, sqlx::MySql>>) {
let db = db_mysql().await;
let mut k = match ta {
Some(pb) => pb.begin().await.unwrap(),
None => db.begin().await.unwrap(),
};
let str = "bbbb".to_string();
let userinsert = sqlx_model::model_option_set!(UserModelRef,{
nickname:str,
gender:11,
});
let i1 = Insert::<sqlx::MySql, UserModel, _>::new(userinsert)
.execute(&mut k)
.await
.unwrap();
assert!(i1.last_insert_id() > 0);
k.commit().await.unwrap();
}