testkit_postgres/
common_traits.rs

1use async_trait::async_trait;
2
3#[async_trait]
4pub trait TransactionTrait: Send + Sync {
5    type Error: Send + Sync;
6    async fn commit(&mut self) -> Result<(), Self::Error>;
7    async fn rollback(&mut self) -> Result<(), Self::Error>;
8}
9
10#[async_trait]
11pub trait TransactionManager: Send + Sync {
12    type Error: Send + Sync;
13    type Tx: TransactionTrait<Error = Self::Error> + Send + Sync;
14    type Connection: Send + Sync;
15
16    async fn begin_transaction(&mut self) -> Result<Self::Tx, Self::Error>;
17    async fn commit_transaction(tx: &mut Self::Tx) -> Result<(), Self::Error>;
18    async fn rollback_transaction(tx: &mut Self::Tx) -> Result<(), Self::Error>;
19}