pub struct StatementCache<DB: Backend, Statement> { /* private fields */ }
i-implement-a-third-party-backend-and-opt-into-breaking-changes
only.Expand description
A prepared statement cache
Implementations§
Source§impl<DB, Statement> StatementCache<DB, Statement>where
DB: Backend + 'static,
Statement: Send + 'static,
DB::TypeMetadata: Send + Clone,
DB::QueryBuilder: Default,
StatementCacheKey<DB>: Hash + Eq,
impl<DB, Statement> StatementCache<DB, Statement>where
DB: Backend + 'static,
Statement: Send + 'static,
DB::TypeMetadata: Send + Clone,
DB::QueryBuilder: Default,
StatementCacheKey<DB>: Hash + Eq,
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new prepared statement cache using CacheSize::Unbounded
as caching strategy.
Sourcepub fn set_cache_size(&mut self, size: CacheSize)
pub fn set_cache_size(&mut self, size: CacheSize)
Set caching strategy from predefined implementations
Sourcepub fn cached_statement<'a, T, R, C>(
&'a mut self,
source: &T,
backend: &DB,
bind_types: &[DB::TypeMetadata],
conn: C,
prepare_fn: fn(C, &str, PrepareForCache, &[DB::TypeMetadata]) -> R,
instrumentation: &mut dyn Instrumentation,
) -> R::Return<'a>
Available on crate features i-implement-a-third-party-backend-and-opt-into-breaking-changes
or sqlite
or mysql
only.
pub fn cached_statement<'a, T, R, C>( &'a mut self, source: &T, backend: &DB, bind_types: &[DB::TypeMetadata], conn: C, prepare_fn: fn(C, &str, PrepareForCache, &[DB::TypeMetadata]) -> R, instrumentation: &mut dyn Instrumentation, ) -> R::Return<'a>
i-implement-a-third-party-backend-and-opt-into-breaking-changes
or sqlite
or mysql
only.Prepare a query as prepared statement
This functions returns a prepared statement corresponding to the
query passed as source
with the bind values passed as bind_types
.
If the query is already cached inside this prepared statement cache
the cached prepared statement will be returned, otherwise prepare_fn
will be called to create a new prepared statement for this query source.
The first parameter of the callback contains the query string, the second
parameter indicates if the constructed prepared statement will be cached or not.
See the module documentation for details
about which statements are cached and which are not cached.
Sourcepub fn cached_statement_non_generic<'a, R, C>(
&'a mut self,
maybe_type_id: Option<TypeId>,
source: &dyn QueryFragmentForCachedStatement<DB>,
backend: &DB,
bind_types: &[DB::TypeMetadata],
conn: C,
prepare_fn: fn(C, &str, PrepareForCache, &[DB::TypeMetadata]) -> R,
instrumentation: &mut dyn Instrumentation,
) -> R::Return<'a>where
R: StatementCallbackReturnType<Statement, C> + 'a,
pub fn cached_statement_non_generic<'a, R, C>(
&'a mut self,
maybe_type_id: Option<TypeId>,
source: &dyn QueryFragmentForCachedStatement<DB>,
backend: &DB,
bind_types: &[DB::TypeMetadata],
conn: C,
prepare_fn: fn(C, &str, PrepareForCache, &[DB::TypeMetadata]) -> R,
instrumentation: &mut dyn Instrumentation,
) -> R::Return<'a>where
R: StatementCallbackReturnType<Statement, C> + 'a,
Prepare a query as prepared statement
This function closely mirrors Self::cached_statement
but
eliminates the generic query type in favour of a trait object
This can be easier to use in situations where you already turned the query type into a concrete SQL string
Auto Trait Implementations§
impl<DB, Statement> Freeze for StatementCache<DB, Statement>
impl<DB, Statement> !RefUnwindSafe for StatementCache<DB, Statement>
impl<DB, Statement> Send for StatementCache<DB, Statement>
impl<DB, Statement> !Sync for StatementCache<DB, Statement>
impl<DB, Statement> Unpin for StatementCache<DB, Statement>
impl<DB, Statement> !UnwindSafe for StatementCache<DB, Statement>
Blanket Implementations§
Source§impl<T> AggregateExpressionMethods for T
impl<T> AggregateExpressionMethods for T
Source§fn aggregate_distinct(self) -> AggregateDistinct<Self>where
Self: DistinctDsl,
fn aggregate_distinct(self) -> AggregateDistinct<Self>where
Self: DistinctDsl,
DISTINCT
modifier for aggregate functions Read moreSource§fn aggregate_all(self) -> AggregateAll<Self>where
Self: AllDsl,
fn aggregate_all(self) -> AggregateAll<Self>where
Self: AllDsl,
ALL
modifier for aggregate functions Read moreSource§fn aggregate_filter<P>(self, f: P) -> AggregateFilter<Self, P>
fn aggregate_filter<P>(self, f: P) -> AggregateFilter<Self, P>
Source§fn aggregate_order<O>(self, o: O) -> AggregateOrder<Self, O>where
Self: OrderAggregateDsl<O>,
fn aggregate_order<O>(self, o: O) -> AggregateOrder<Self, O>where
Self: OrderAggregateDsl<O>,
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.