qjack 0.1.3

ergonomic sqlx wrapper for nightly Rust
use crate::{pool::pool, Error, __feature__};


pub enum TransactionResult {
    Commit,
    Rollback,
}

pub struct X(
    pub(crate) sqlx::Transaction<'static, __feature__::DB>
);
impl X {
    #[inline(always)] pub async fn commit(self) -> Result<TransactionResult, Error> {
        self.0.commit().await?;
        Ok(TransactionResult::Commit)
    }
    #[inline(always)] pub async fn rollback(self) -> Result<TransactionResult, Error> {
        self.0.rollback().await?;
        Ok(TransactionResult::Rollback)
    }
}
impl X {
    #[inline(always)] pub(crate) async fn new() -> Result<Self, Error> {
        Ok(Self(pool().begin().await?))
    }
}