pub enum Executor<'a, DB: Database> {
Pool(&'a Pool<DB>),
Conn(&'a mut DB::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::Connection)
A single, mutable database connection.
Implementations§
Source§impl<'a, DB: Database> Executor<'a, DB>
impl<'a, DB: Database> Executor<'a, DB>
Sourcepub async fn execute<'q, A>(
&mut self,
query: Query<'q, DB, A>,
) -> Result<DB::QueryResult, Error>where
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
for<'c> &'c mut DB::Connection: Executor<'c, Database = DB>,
pub async fn execute<'q, A>(
&mut self,
query: Query<'q, DB, A>,
) -> Result<DB::QueryResult, Error>where
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
for<'c> &'c mut DB::Connection: 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::Row> + Send + Unpin,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
for<'c> &'c mut DB::Connection: 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::Row> + Send + Unpin,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
for<'c> &'c mut DB::Connection: 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::Row> + Send + Unpin,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
for<'c> &'c mut DB::Connection: 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::Row> + Send + Unpin,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
for<'c> &'c mut DB::Connection: 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>,
) -> BoxStream<'a, Result<T, Error>>where
T: for<'r> FromRow<'r, DB::Row> + Send + Unpin + 'a,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
for<'c> &'c mut DB::Connection: Executor<'c, Database = DB>,
'q: 'a,
pub fn fetch_stream<'q, T, A>(
self,
query: QueryAs<'q, DB, T, A>,
) -> BoxStream<'a, Result<T, Error>>where
T: for<'r> FromRow<'r, DB::Row> + Send + Unpin + 'a,
A: IntoArguments<'q, DB> + 'q,
DB: SqlDialect,
for<'c> &'c mut DB::Connection: Executor<'c, Database = DB>,
'q: 'a,
Executes a SQL query and returns a stream of resulting rows.
Trait Implementations§
Source§impl<'a, DB: Database> From<&'a mut <DB as Database>::Connection> for Executor<'a, DB>
impl<'a, DB: Database> From<&'a mut <DB as Database>::Connection> for Executor<'a, DB>
Source§fn from(conn: &'a mut DB::Connection) -> Self
fn from(conn: &'a mut DB::Connection) -> Self
Converts to this type from the input type.
Source§impl<'a, DB: SqlDialect> IntoExecutor<'a> for Executor<'a, DB>
impl<'a, DB: SqlDialect> IntoExecutor<'a> for Executor<'a, DB>
impl<'a, DB: Database> Send for Executor<'a, DB>where
DB::Connection: Send,
impl<'a, DB: Database> Sync for Executor<'a, DB>where
DB::Connection: Sync,
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