tina-core 0.0.2

Tina platform
Documentation
//! 事务处理

use std::fmt::Debug;

use crate::tina::data::AppResult;
/// 事务接口
#[async_trait]
pub trait ITransactionService: Debug + Send + Sync + 'static {
    /// 事务客户端
    type Client: Send + 'static;
    /// 开启新事务, 返回新事务的客户端
    async fn new_transaction(&self) -> AppResult<Self::Client>;
    /// 请求事务, 如果已开启事务, 则不作处理
    async fn require_transaction(&self) -> AppResult<()>;
    /// 挂起当前事务, 并返回一个新的客户端
    async fn pend_transaction(&self) -> AppResult<Self::Client>;
    /// 提交当前的数据库事务
    async fn commit_transaction(&self) -> AppResult<()>;
    /// 回滚当前的数据库事务
    async fn rollback_transaction(&self) -> AppResult<()>;
    /// 判断是否存在事务
    async fn is_in_transaction(&self) -> AppResult<bool>;
}