pub enum DatabaseExecutor<'c> {
Connection(&'c DatabaseConnection),
Transaction(&'c DatabaseTransaction),
OwnedTransaction(DatabaseTransaction),
}Expand description
Either a borrowed DatabaseConnection / DatabaseTransaction, or an
owned DatabaseTransaction.
Implements ConnectionTrait and TransactionTrait, so APIs that
need to accept โany of those threeโ can take a DatabaseExecutor and
not worry about which variant the caller had. Used in particular by
sea-orm-migrationโs SchemaManager.
Variantsยง
Connection(&'c DatabaseConnection)
Borrowed connection โ use against a long-lived pool.
Transaction(&'c DatabaseTransaction)
Borrowed transaction โ caller still owns the transaction handle.
OwnedTransaction(DatabaseTransaction)
Owned transaction โ used by migrationโs SchemaManager::begin() so
the transaction can be committed/rolled back at the end of the call.
Implementationsยง
Sourceยงimpl DatabaseExecutor<'_>
impl DatabaseExecutor<'_>
Sourcepub async fn transaction_async<F, T, E>(
&self,
callback: F,
) -> Result<T, TransactionError<E>>where
F: for<'c> AsyncFnOnce(&'c DatabaseTransaction) -> Result<T, E> + Send,
T: Send,
E: Display + Debug + Send,
pub async fn transaction_async<F, T, E>(
&self,
callback: F,
) -> Result<T, TransactionError<E>>where
F: for<'c> AsyncFnOnce(&'c DatabaseTransaction) -> Result<T, E> + Send,
T: Send,
E: Display + Debug + Send,
Execute the function inside a transaction. If the function returns an error, the transaction will be rolled back. Otherwise, the transaction will be committed.
Sourcepub async fn transaction_with_config_async<F, T, E>(
&self,
callback: F,
isolation_level: Option<IsolationLevel>,
access_mode: Option<AccessMode>,
) -> Result<T, TransactionError<E>>where
F: for<'c> AsyncFnOnce(&'c DatabaseTransaction) -> Result<T, E> + Send,
T: Send,
E: Display + Debug + Send,
pub async fn transaction_with_config_async<F, T, E>(
&self,
callback: F,
isolation_level: Option<IsolationLevel>,
access_mode: Option<AccessMode>,
) -> Result<T, TransactionError<E>>where
F: for<'c> AsyncFnOnce(&'c DatabaseTransaction) -> Result<T, E> + Send,
T: Send,
E: Display + Debug + Send,
Execute the function inside a transaction with isolation level and/or access mode. If the function returns an error, the transaction will be rolled back. Otherwise, the transaction will be committed.
Sourcepub fn is_transaction(&self) -> bool
pub fn is_transaction(&self) -> bool
Returns true if this executor is backed by a transaction (borrowed or owned).
Sourcepub fn get_schema_builder(&self) -> SchemaBuilder
pub fn get_schema_builder(&self) -> SchemaBuilder
Creates a SchemaBuilder for this backend
Trait Implementationsยง
Sourceยงimpl Connection for DatabaseExecutor<'_>
Available on crate features schema-sync and sqlx-dep only.
impl Connection for DatabaseExecutor<'_>
schema-sync and sqlx-dep only.fn query_all<'life0, 'async_trait>(
&'life0 self,
select: SelectStatement,
) -> Pin<Box<dyn Future<Output = Result<Vec<SqlxRow>, SqlxError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query_all_raw<'life0, 'async_trait>(
&'life0 self,
sql: String,
) -> Pin<Box<dyn Future<Output = Result<Vec<SqlxRow>, SqlxError>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Sourceยงimpl ConnectionTrait for DatabaseExecutor<'_>
impl ConnectionTrait for DatabaseExecutor<'_>
Sourceยงfn get_database_backend(&self) -> DbBackend
fn get_database_backend(&self) -> DbBackend
Sourceยงfn execute_raw<'life0, 'async_trait>(
&'life0 self,
stmt: Statement,
) -> Pin<Box<dyn Future<Output = Result<ExecResult, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute_raw<'life0, 'async_trait>(
&'life0 self,
stmt: Statement,
) -> Pin<Box<dyn Future<Output = Result<ExecResult, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Sourceยงfn execute_unprepared<'life0, 'life1, 'async_trait>(
&'life0 self,
sql: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ExecResult, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute_unprepared<'life0, 'life1, 'async_trait>(
&'life0 self,
sql: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ExecResult, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sourceยงfn query_one_raw<'life0, 'async_trait>(
&'life0 self,
stmt: Statement,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryResult>, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query_one_raw<'life0, 'async_trait>(
&'life0 self,
stmt: Statement,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryResult>, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
QueryResultSourceยงfn query_all_raw<'life0, 'async_trait>(
&'life0 self,
stmt: Statement,
) -> Pin<Box<dyn Future<Output = Result<Vec<QueryResult>, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query_all_raw<'life0, 'async_trait>(
&'life0 self,
stmt: Statement,
) -> Pin<Box<dyn Future<Output = Result<Vec<QueryResult>, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
QueryResultSourceยงfn execute<'life0, 'life1, 'async_trait, S>(
&'life0 self,
stmt: &'life1 S,
) -> Pin<Box<dyn Future<Output = Result<ExecResult, DbErr>> + Send + 'async_trait>>where
S: 'async_trait + StatementBuilder,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait, S>(
&'life0 self,
stmt: &'life1 S,
) -> Pin<Box<dyn Future<Output = Result<ExecResult, DbErr>> + Send + 'async_trait>>where
S: 'async_trait + StatementBuilder,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
StatementBuilderSourceยงfn query_one<'life0, 'life1, 'async_trait, S>(
&'life0 self,
stmt: &'life1 S,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryResult>, DbErr>> + Send + 'async_trait>>where
S: 'async_trait + StatementBuilder,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query_one<'life0, 'life1, 'async_trait, S>(
&'life0 self,
stmt: &'life1 S,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryResult>, DbErr>> + Send + 'async_trait>>where
S: 'async_trait + StatementBuilder,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
StatementBuilder and return a single row of QueryResultSourceยงfn query_all<'life0, 'life1, 'async_trait, S>(
&'life0 self,
stmt: &'life1 S,
) -> Pin<Box<dyn Future<Output = Result<Vec<QueryResult>, DbErr>> + Send + 'async_trait>>where
S: 'async_trait + StatementBuilder,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query_all<'life0, 'life1, 'async_trait, S>(
&'life0 self,
stmt: &'life1 S,
) -> Pin<Box<dyn Future<Output = Result<Vec<QueryResult>, DbErr>> + Send + 'async_trait>>where
S: 'async_trait + StatementBuilder,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
StatementBuilder and return a vector of QueryResultSourceยงfn support_returning(&self) -> bool
fn support_returning(&self) -> bool
RETURNING syntax on insert and updateSourceยงfn is_mock_connection(&self) -> bool
fn is_mock_connection(&self) -> bool
Sourceยงimpl<'c> Debug for DatabaseExecutor<'c>
impl<'c> Debug for DatabaseExecutor<'c>
Sourceยงimpl<'c> From<&'c DatabaseConnection> for DatabaseExecutor<'c>
impl<'c> From<&'c DatabaseConnection> for DatabaseExecutor<'c>
Sourceยงfn from(conn: &'c DatabaseConnection) -> Self
fn from(conn: &'c DatabaseConnection) -> Self
Sourceยงimpl<'c> From<&'c DatabaseTransaction> for DatabaseExecutor<'c>
impl<'c> From<&'c DatabaseTransaction> for DatabaseExecutor<'c>
Sourceยงfn from(trans: &'c DatabaseTransaction) -> Self
fn from(trans: &'c DatabaseTransaction) -> Self
Sourceยงimpl<'c> IntoDatabaseExecutor<'c> for DatabaseExecutor<'c>
impl<'c> IntoDatabaseExecutor<'c> for DatabaseExecutor<'c>
Sourceยงfn into_database_executor(self) -> DatabaseExecutor<'c>
fn into_database_executor(self) -> DatabaseExecutor<'c>
DatabaseExecutor.Sourceยงimpl TransactionTrait for DatabaseExecutor<'_>
impl TransactionTrait for DatabaseExecutor<'_>
Sourceยงtype Transaction = DatabaseTransaction
type Transaction = DatabaseTransaction
Sourceยงfn begin<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<DatabaseTransaction, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn begin<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<DatabaseTransaction, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
BEGIN transaction.
Returns a Transaction that can be committed or rolled backSourceยงfn begin_with_config<'life0, 'async_trait>(
&'life0 self,
isolation_level: Option<IsolationLevel>,
access_mode: Option<AccessMode>,
) -> Pin<Box<dyn Future<Output = Result<DatabaseTransaction, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn begin_with_config<'life0, 'async_trait>(
&'life0 self,
isolation_level: Option<IsolationLevel>,
access_mode: Option<AccessMode>,
) -> Pin<Box<dyn Future<Output = Result<DatabaseTransaction, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
BEGIN transaction with isolation level and/or access mode.
Returns a Transaction that can be committed or rolled backSourceยงfn begin_with_options<'life0, 'async_trait>(
&'life0 self,
options: TransactionOptions,
) -> Pin<Box<dyn Future<Output = Result<DatabaseTransaction, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn begin_with_options<'life0, 'async_trait>(
&'life0 self,
options: TransactionOptions,
) -> Pin<Box<dyn Future<Output = Result<DatabaseTransaction, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
BEGIN transaction with isolation level and/or access mode.
Returns a Transaction that can be committed or rolled backSourceยงfn transaction<'life0, 'async_trait, F, T, E>(
&'life0 self,
callback: F,
) -> Pin<Box<dyn Future<Output = Result<T, TransactionError<E>>> + Send + 'async_trait>>
fn transaction<'life0, 'async_trait, F, T, E>( &'life0 self, callback: F, ) -> Pin<Box<dyn Future<Output = Result<T, TransactionError<E>>> + Send + 'async_trait>>
Sourceยงfn transaction_with_config<'life0, 'async_trait, F, T, E>(
&'life0 self,
callback: F,
isolation_level: Option<IsolationLevel>,
access_mode: Option<AccessMode>,
) -> Pin<Box<dyn Future<Output = Result<T, TransactionError<E>>> + Send + 'async_trait>>
fn transaction_with_config<'life0, 'async_trait, F, T, E>( &'life0 self, callback: F, isolation_level: Option<IsolationLevel>, access_mode: Option<AccessMode>, ) -> Pin<Box<dyn Future<Output = Result<T, TransactionError<E>>> + Send + 'async_trait>>
Auto Trait Implementationsยง
impl<'c> !RefUnwindSafe for DatabaseExecutor<'c>
impl<'c> !UnwindSafe for DatabaseExecutor<'c>
impl<'c> Freeze for DatabaseExecutor<'c>
impl<'c> Send for DatabaseExecutor<'c>
impl<'c> Sync for DatabaseExecutor<'c>
impl<'c> Unpin for DatabaseExecutor<'c>
impl<'c> UnsafeUnpin for DatabaseExecutor<'c>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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>
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>
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