Struct BoxedDatabaseEntryPoint

Source
pub struct BoxedDatabaseEntryPoint<DB>
where DB: DatabaseBackend + Send + Sync + Debug + 'static,
{ /* private fields */ }
Expand description

Entry point for database operations with automatic boxing of closures

This provides functionality for database operations with automatic boxing of future closures to solve lifetime issues. Use the boxed_async! macro to easily create boxed async blocks.

Implementations§

Source§

impl<DB> BoxedDatabaseEntryPoint<DB>
where DB: DatabaseBackend + Send + Sync + Debug + 'static,

Source

pub fn new(backend: DB) -> Self

Create a new entry point with the given backend

Source

pub fn setup<F>(self, setup_fn: F) -> BoxedSetupHandler<DB>
where F: for<'a> FnOnce(&'a mut <DB::Pool as DatabasePool>::Connection) -> Pin<Box<dyn Future<Output = Result<(), DB::Error>> + Send + 'a>> + Send + Sync + 'static,

Set up the database with the given function

This method takes a closure that will be executed during setup. Use the boxed_async! macro to create an async block that captures variables without lifetime issues.

Source

pub fn with_transaction<F>( self, transaction_fn: F, ) -> BoxedTransactionOnlyHandler<DB>
where F: for<'a> FnOnce(&'a mut <DB as DatabaseBackend>::Connection) -> Pin<Box<dyn Future<Output = Result<(), DB::Error>> + Send + 'a>> + Send + Sync + 'static,

Initialize a database with a transaction

Source

pub async fn execute(self) -> Result<TestContext<DB>, DB::Error>

Execute this handler

Source

pub fn setup_async<F, Fut>(self, setup_fn: F) -> BoxedSetupHandler<DB>
where F: FnOnce(&mut <DB::Pool as DatabasePool>::Connection) -> Fut + Send + Sync + 'static, Fut: Future<Output = Result<(), DB::Error>> + Send + 'static,

Add an async setup function without requiring boxed_async

This method provides a more ergonomic API without requiring manual boxing

Source

pub fn transaction<F, Fut>( self, transaction_fn: F, ) -> BoxedTransactionOnlyHandler<DB>
where F: FnOnce(&mut <DB as DatabaseBackend>::Connection) -> Fut + Send + Sync + 'static, Fut: Future<Output = Result<(), DB::Error>> + Send + 'static,

Add a transaction function without requiring boxed_async

This method provides a more ergonomic API without requiring manual boxing

Source

pub async fn run(self) -> Result<TestContext<DB>, DB::Error>

Run the handler

This is an alias for execute() with a more intuitive name

Trait Implementations§

Source§

impl<DB> TransactionHandler<DB> for BoxedDatabaseEntryPoint<DB>
where DB: DatabaseBackend + Send + Sync + Debug + 'static,

Source§

type Item = TestContext<DB>

The result type of this handler
Source§

type Error = <DB as DatabaseBackend>::Error

The error type
Source§

fn execute<'life0, 'async_trait>( self, _ctx: &'life0 mut TestContext<DB>, ) -> Pin<Box<dyn Future<Output = Result<Self::Item, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Execute the handler with the given context
Source§

fn execute_standalone<'async_trait>( self, backend: DB, ) -> Pin<Box<dyn Future<Output = Result<Self::Item, Self::Error>> + Send + 'async_trait>>
where Self: Sized + 'async_trait,

Execute this handler with a new context Read more
Source§

fn and_then<F, B>(self, f: F) -> AndThenHandler<DB, Self, B, F>
where Self: Sized, B: TransactionHandler<DB, Error = Self::Error> + Send + Sync, F: FnOnce(Self::Item) -> B + Send + Sync + 'static,

Chain two handlers together, where the second handler may depend on the result of the first
Source§

fn setup<S, Fut, E>( self, setup_fn: S, ) -> impl TransactionHandler<DB, Item = (), Error = Self::Error>
where Self: Sized, E: From<DB::Error> + From<Self::Error> + Send + Sync, Fut: Future<Output = Result<(), DB::Error>> + Send + 'static, S: FnOnce(&mut <DB::Pool as DatabasePool>::Connection) -> Fut + Send + Sync + 'static,

Add a setup operation to this handler
Source§

fn with_transaction<F, Fut, E>( self, transaction_fn: F, ) -> impl TransactionHandler<DB, Item = (), Error = Self::Error>
where Self: Sized, E: From<DB::Error> + From<Self::Error> + Send + Sync, Fut: Future<Output = Result<(), DB::Error>> + Send + 'static, F: FnOnce(&mut <DB as DatabaseBackend>::Connection) -> Fut + Send + Sync + 'static,

Add a transaction operation to this handler
Source§

fn with_db_transaction<F, Fut, E>( self, db: TestDatabaseInstance<DB>, transaction_fn: F, ) -> impl TransactionHandler<DB, Item = TestContext<DB>, Error = Self::Error>
where Self: Sized, E: From<DB::Error> + From<Self::Error> + Send + Sync, Fut: Future<Output = Result<(), DB::Error>> + Send + 'static, F: FnOnce(&mut <DB as DatabaseBackend>::Connection) -> Fut + Send + Sync + 'static,

Create a database transaction handler from this handler
Source§

fn run_with_database<'async_trait>( self, backend: DB, ) -> Pin<Box<dyn Future<Output = Result<TestContext<DB>, Self::Error>> + Send + 'async_trait>>
where Self: Sized + 'async_trait,

Run this handler with a new database instance

Auto Trait Implementations§

§

impl<DB> Freeze for BoxedDatabaseEntryPoint<DB>
where DB: Freeze,

§

impl<DB> RefUnwindSafe for BoxedDatabaseEntryPoint<DB>
where DB: RefUnwindSafe,

§

impl<DB> Send for BoxedDatabaseEntryPoint<DB>

§

impl<DB> Sync for BoxedDatabaseEntryPoint<DB>

§

impl<DB> Unpin for BoxedDatabaseEntryPoint<DB>
where DB: Unpin,

§

impl<DB> UnwindSafe for BoxedDatabaseEntryPoint<DB>
where DB: UnwindSafe,

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<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, 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