sqlx-model-core 0.0.1-beta.1

sqlx model core
macro_rules! execute_by_sql{
    ($self_var:ident,$self_type:ty)=>{
        pub async fn execute_by_sql<'c,SQ,RB>(
            $self_var
            ,sql_call:SQ
            ,bind_call:RB
            ,pool:&'c Pool<DB>
            )->Result<<DB as Database>::QueryResult,Error>
        where
            SQ:FnOnce(&$self_type)->String,
            for<'ct> RB:FnOnce(Query<'ct,DB,<DB as HasArguments>::Arguments>,&'ct $self_type)->Query<'ct,DB,<DB as HasArguments<'ct>>::Arguments>,
            for<'n> <DB as HasArguments<'n>>::Arguments:
                Arguments<'n>+IntoArguments<'n,DB>,
            &'c Pool<DB>: Executor<'c, Database = DB>
        {
            let sql=sql_call(&$self_var);
            let mut res =sqlx::query(sql.as_str());
            res=bind_call(res,&$self_var);
            res.execute(pool).await
        }
    };
    ($ret_type:ty)=>{
        execute_by_sql!(self,$ret_type);
    };
}


//insert end

macro_rules! scalar_pk_where {
    ($db_type:ty,$table_pk:expr) => {
        match $table_pk.0.get(0){
            Some(ref pkfield)=>{
                let bst = DbType::type_new::<$db_type>().mark(0);
                format!("{}={}", pkfield.name, bst)
            }
            None=>{
                "0".to_string()
            }
        }
    };
}