Skip to main content

RestrictedTransaction

Struct RestrictedTransaction 

Source
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

Source

pub fn user_id(&self) -> UserId

Get the [RbacUserId] bounded to this connection.

Source

pub async fn transaction_async<F, T, E>( &self, callback: F, ) -> Result<T, TransactionError<E>>
where F: for<'c> AsyncFnOnce(&'c RestrictedTransaction) -> 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.

Source

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 RestrictedTransaction) -> 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.

Source

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.

Source

pub fn user_can<P, R>(&self, permission: P, resource: R) -> Result<bool, DbErr>

Returns true if the current user can perform action on resource

Source§

impl RestrictedTransaction

Source

pub async fn commit(self) -> Result<(), DbErr>

Commit a transaction

Source

pub async fn rollback(self) -> Result<(), DbErr>

Rolls back a transaction explicitly

Trait Implementations§

Source§

impl ConnectionTrait for RestrictedTransaction

Source§

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,

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,

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,

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,

Execute a Statement and return a single row of QueryResult
Source§

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 StatementBuilder and return a single row of QueryResult
Source§

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 QueryResult
Source§

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 StatementBuilder and return a vector of QueryResult
Source§

fn support_returning(&self) -> bool

Check if the connection supports RETURNING syntax on insert and update
Source§

fn is_mock_connection(&self) -> bool

Check if the connection is a test connection for the Mock database
Source§

impl Debug for RestrictedTransaction

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl TransactionSession for RestrictedTransaction

Source§

fn commit<'async_trait>( self, ) -> Pin<Box<dyn Future<Output = Result<(), DbErr>> + Send + 'async_trait>>
where Self: 'async_trait,

Commit a transaction
Source§

fn rollback<'async_trait>( self, ) -> Pin<Box<dyn Future<Output = Result<(), DbErr>> + Send + 'async_trait>>
where Self: 'async_trait,

Rolls back a transaction explicitly
Source§

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>>
where F: for<'c> FnOnce(&'c RestrictedTransaction) -> Pin<Box<dyn Future<Output = Result<T, E>> + Send + 'c>> + Send + 'async_trait, T: Send + 'async_trait, E: Display + Debug + Send + 'async_trait, Self: 'async_trait, 'life0: '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>>
where F: for<'c> FnOnce(&'c RestrictedTransaction) -> Pin<Box<dyn Future<Output = Result<T, E>> + Send + 'c>> + Send + 'async_trait, T: Send + 'async_trait, E: Display + Debug + Send + 'async_trait, Self: 'async_trait, 'life0: '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

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,

Execute SQL BEGIN transaction. Returns a Transaction that can be committed or rolled back
Source§

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 back
Source§

fn begin_with_options<'life0, 'async_trait>( &'life0 self, options: TransactionOptions, ) -> 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 back

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more