pub struct RestrictedTransaction { /* private fields */ }Available on crate feature
rbac only.Expand description
Wrapper of DatabaseTransaction that performs authorization on all executed
queries for the current user. Note that raw SQL Statement is not allowed
currently.
Implementationsยง
Sourceยงimpl RestrictedTransaction
impl RestrictedTransaction
Sourcepub fn user_can_run<S: StatementBuilder>(&self, stmt: &S) -> Result<(), DbErr>
pub fn user_can_run<S: StatementBuilder>(&self, stmt: &S) -> Result<(), DbErr>
Returns () if the current user can execute / query the given SQL statement.
Returns DbErr::AccessDenied otherwise.
Trait Implementationsยง
Sourceยงimpl ConnectionTrait for RestrictedTransaction
impl ConnectionTrait for RestrictedTransaction
Sourceยงfn get_database_backend(&self) -> DbBackend
fn get_database_backend(&self) -> DbBackend
Get the database backend for the connection. This depends on feature flags enabled.
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,
Execute a Statement
Sourceยง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,
Execute a [QueryStatement]
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,
Execute a unprepared Statement
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,
Execute a Statement and return a single row of
QueryResultSourceยง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,
Execute a [QueryStatement] and return a single row of
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,
Execute a Statement and return a vector 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,
Execute a [QueryStatement] and return a vector of
QueryResultSourceยงfn support_returning(&self) -> bool
fn support_returning(&self) -> bool
Check if the connection supports
RETURNING syntax on insert and updateSourceยงfn is_mock_connection(&self) -> bool
fn is_mock_connection(&self) -> bool
Check if the connection is a test connection for the Mock database
Sourceยงimpl Debug for RestrictedTransaction
impl Debug for RestrictedTransaction
Sourceยงimpl TransactionSession for RestrictedTransaction
impl TransactionSession for RestrictedTransaction
Sourceยงimpl TransactionTrait for RestrictedTransaction
impl TransactionTrait for RestrictedTransaction
Sourceยง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>>
Execute the function inside a transaction. If the function returns an error, the transaction will be rolled back. If it does not return an error, the transaction will be committed.
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>>
Execute the function inside a transaction. If the function returns an error, the transaction will be rolled back. If it does not return an error, the transaction will be committed.
Sourceยงtype Transaction = RestrictedTransaction
type Transaction = RestrictedTransaction
The concrete type for the transaction
Sourceยงfn begin<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<RestrictedTransaction, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn begin<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<RestrictedTransaction, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Execute SQL
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<RestrictedTransaction, 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<RestrictedTransaction, DbErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Execute SQL
BEGIN transaction with isolation level and/or access mode.
Returns a Transaction that can be committed or rolled backAuto Trait Implementationsยง
impl Freeze for RestrictedTransaction
impl !RefUnwindSafe for RestrictedTransaction
impl Send for RestrictedTransaction
impl Sync for RestrictedTransaction
impl Unpin for RestrictedTransaction
impl !UnwindSafe for RestrictedTransaction
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