实现更新和删除方法

有了上一章的基础,我们实现更新和删除方法也不是难事。

实现更新方法

pub(crate) fn del_ts(dm: &DbMeta) -> proc_macro2::TokenStream {
    let table = dm.table.clone();
    let pk = dm.pk_ident().clone();
    let pk_str = pk.to_string();
    let sql = format!("DELETE FROM {:?} WHERE {:?} = ", &table, &pk_str);

    quote! {
        pub async fn delete<'a>(&self, e: impl  ::sqlx::PgExecutor<'a>) -> ::sqlx::Result<u64> {
            let sql = #sql;
            let mut q = ::sqlx::QueryBuilder::new(sql);
            q.push_bind(&self.#pk);
            let aff = q.build().execute(e).await?.rows_affected();
            Ok(aff)
        }
    }
}

本章代码位于04/实现更新和删除分支。

要查看完整内容,请先登录