sqlx_tracing/
lib.rs

1#![doc = include_str!("../README.md")]
2
3pub mod macros;
4mod pool;
5pub mod prelude;
6
7#[cfg(feature = "postgres")]
8pub mod postgres;
9
10#[cfg(feature = "sqlite")]
11pub mod sqlite;
12
13/// An asynchronous pool of SQLx database connections.
14#[derive(Clone, Debug)]
15pub struct Pool<DB>(sqlx::Pool<DB>)
16where
17    DB: sqlx::Database;
18
19impl<DB> From<sqlx::Pool<DB>> for Pool<DB>
20where
21    DB: sqlx::Database,
22{
23    fn from(value: sqlx::Pool<DB>) -> Self {
24        Self(value)
25    }
26}
27
28impl<DB> Pool<DB>
29where
30    DB: sqlx::Database,
31{
32    /// Retrieves a connection and immediately begins a new transaction.
33    pub async fn begin(&self) -> Result<Transaction<'static, DB>, sqlx::Error> {
34        self.0.begin().await.map(Transaction::from)
35    }
36}
37
38/// An in-progress database transaction or savepoint.
39#[derive(Debug)]
40pub struct Transaction<'c, DB>(sqlx::Transaction<'c, DB>)
41where
42    DB: sqlx::Database;
43
44impl<'c, DB> From<sqlx::Transaction<'c, DB>> for Transaction<'c, DB>
45where
46    DB: sqlx::Database,
47{
48    fn from(value: sqlx::Transaction<'c, DB>) -> Self {
49        Self(value)
50    }
51}