Struct tide_sqlx::SQLxMiddleware[][src]

pub struct SQLxMiddleware<DB> where
    DB: Database,
    DB::Connection: Send + Sync + 'static, 
{ /* fields omitted */ }

This middleware holds a pool of SQLx database connections, and automatically hands each tide::Request a connection, which may transparently be either a database transaction, or a direct pooled database connection.

By default, transactions are used for all http methods other than GET and HEAD.

When using this, use the SQLxRequestExt extenstion trait to get the connection.

Example

use sqlx::Acquire; // Or sqlx::prelude::*;
use sqlx::postgres::Postgres;

use tide_sqlx::SQLxMiddleware;
use tide_sqlx::SQLxRequestExt;

let mut app = tide::new();
app.with(SQLxMiddleware::<Postgres>::new("postgres://localhost/a_database").await?);

app.at("/").post(|req: tide::Request<()>| async move {
    let mut pg_conn = req.sqlx_conn::<Postgres>().await;

    sqlx::query("SELECT * FROM users")
        .fetch_optional(pg_conn.acquire().await?)
        .await;

    Ok("")
});

Implementations

impl<DB> SQLxMiddleware<DB> where
    DB: Database,
    DB::Connection: Send + Sync + 'static, 
[src]

pub async fn new(pgurl: &str) -> Result<Self, Error>[src]

Create a new instance of SQLxMiddleware.

Trait Implementations

impl<DB> AsRef<Pool<DB>> for SQLxMiddleware<DB> where
    DB: Database,
    DB::Connection: Send + Sync + 'static, 
[src]

impl<DB: Clone> Clone for SQLxMiddleware<DB> where
    DB: Database,
    DB::Connection: Send + Sync + 'static, 
[src]

impl<DB: Debug> Debug for SQLxMiddleware<DB> where
    DB: Database,
    DB::Connection: Send + Sync + 'static, 
[src]

impl<DB> From<Pool<DB>> for SQLxMiddleware<DB> where
    DB: Database,
    DB::Connection: Send + Sync + 'static, 
[src]

fn from(pool: Pool<DB>) -> Self[src]

Create a new instance of SQLxMiddleware from a sqlx::Pool.

impl<State, DB> Middleware<State> for SQLxMiddleware<DB> where
    State: Clone + Send + Sync + 'static,
    DB: Database,
    DB::Connection: Send + Sync + 'static, 
[src]

Auto Trait Implementations

impl<DB> !RefUnwindSafe for SQLxMiddleware<DB>

impl<DB> Send for SQLxMiddleware<DB>

impl<DB> Sync for SQLxMiddleware<DB>

impl<DB> Unpin for SQLxMiddleware<DB>

impl<DB> !UnwindSafe for SQLxMiddleware<DB>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Conv for T

impl<T> Conv for T

impl<T> FmtForward for T

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pipe for T where
    T: ?Sized

impl<T> Pipe for T

impl<T> PipeAsRef for T

impl<T> PipeBorrow for T

impl<T> PipeDeref for T

impl<T> PipeRef for T

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> Tap for T

impl<T> Tap for T

impl<T, U> TapAsRef<U> for T where
    U: ?Sized

impl<T, U> TapBorrow<U> for T where
    U: ?Sized

impl<T> TapDeref for T

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> TryConv for T

impl<T> TryConv for T

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,