pub enum Executor<'a, DB>where
DB: Database,{
Pool(&'a Pool<DB>),
Conn(&'a mut <DB as Database>::Connection),
}Expand description
A unified database executor that can wrap either a connection pool or a single connection.
This allows Premix to remain agnostic about whether it’s executing within a transaction, a shared pool, or a dedicated connection.
Variants§
Pool(&'a Pool<DB>)
A shared connection pool.
Conn(&'a mut <DB as Database>::Connection)
A single, mutable database connection.
Implementations§
Source§impl<'a, DB> Executor<'a, DB>where
DB: Database,
impl<'a, DB> Executor<'a, DB>where
DB: Database,
Sourcepub async fn execute<'q, A>(
&mut self,
query: Query<'q, DB, A>,
) -> Result<<DB as Database>::QueryResult, Error>where
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
&'c mut <DB as Database>::Connection: for<'c> Executor<'c, Database = DB>,
pub async fn execute<'q, A>(
&mut self,
query: Query<'q, DB, A>,
) -> Result<<DB as Database>::QueryResult, Error>where
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
&'c mut <DB as Database>::Connection: for<'c> Executor<'c, Database = DB>,
Executes a SQL query and returns the database result (e.g., number of rows affected).
Sourcepub async fn fetch_all<'q, T, A>(
&mut self,
query: QueryAs<'q, DB, T, A>,
) -> Result<Vec<T>, Error>where
T: for<'r> FromRow<'r, <DB as Database>::Row> + Send + Unpin,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
&'c mut <DB as Database>::Connection: for<'c> Executor<'c, Database = DB>,
pub async fn fetch_all<'q, T, A>(
&mut self,
query: QueryAs<'q, DB, T, A>,
) -> Result<Vec<T>, Error>where
T: for<'r> FromRow<'r, <DB as Database>::Row> + Send + Unpin,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
&'c mut <DB as Database>::Connection: for<'c> Executor<'c, Database = DB>,
Executes a SQL query and fetches all resulting rows.
Sourcepub async fn fetch_optional<'q, T, A>(
&mut self,
query: QueryAs<'q, DB, T, A>,
) -> Result<Option<T>, Error>where
T: for<'r> FromRow<'r, <DB as Database>::Row> + Send + Unpin,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
&'c mut <DB as Database>::Connection: for<'c> Executor<'c, Database = DB>,
pub async fn fetch_optional<'q, T, A>(
&mut self,
query: QueryAs<'q, DB, T, A>,
) -> Result<Option<T>, Error>where
T: for<'r> FromRow<'r, <DB as Database>::Row> + Send + Unpin,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
&'c mut <DB as Database>::Connection: for<'c> Executor<'c, Database = DB>,
Executes a SQL query and fetches an optional single row.
Sourcepub fn fetch_stream<'q, T, A>(
self,
query: QueryAs<'q, DB, T, A>,
) -> Pin<Box<dyn Stream<Item = Result<T, Error>> + Send + 'a>>where
'q: 'a,
T: for<'r> FromRow<'r, <DB as Database>::Row> + Send + Unpin + 'a,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
&'c mut <DB as Database>::Connection: for<'c> Executor<'c, Database = DB>,
pub fn fetch_stream<'q, T, A>(
self,
query: QueryAs<'q, DB, T, A>,
) -> Pin<Box<dyn Stream<Item = Result<T, Error>> + Send + 'a>>where
'q: 'a,
T: for<'r> FromRow<'r, <DB as Database>::Row> + Send + Unpin + 'a,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
&'c mut <DB as Database>::Connection: for<'c> Executor<'c, Database = DB>,
Executes a SQL query and returns a stream of resulting rows.
Trait Implementations§
Source§impl<'a, DB> From<&'a mut <DB as Database>::Connection> for Executor<'a, DB>where
DB: Database,
impl<'a, DB> From<&'a mut <DB as Database>::Connection> for Executor<'a, DB>where
DB: Database,
Source§impl<'a, DB> IntoExecutor<'a> for Executor<'a, DB>where
DB: SqlDialect,
impl<'a, DB> IntoExecutor<'a> for Executor<'a, DB>where
DB: SqlDialect,
impl<'a, DB> Send for Executor<'a, DB>
impl<'a, DB> Sync for Executor<'a, DB>
Auto Trait Implementations§
impl<'a, DB> Freeze for Executor<'a, DB>
impl<'a, DB> !RefUnwindSafe for Executor<'a, DB>
impl<'a, DB> Unpin for Executor<'a, DB>
impl<'a, DB> !UnwindSafe for Executor<'a, DB>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more