pub struct QueryBuilder<E>where
E: EntityTrait,{ /* private fields */ }Expand description
Implementations§
Source§impl<E> QueryBuilder<E>
impl<E> QueryBuilder<E>
Sourcepub fn filter<F>(self, filter: F) -> Selfwhere
F: IntoCondition,
pub fn filter<F>(self, filter: F) -> Selfwhere
F: IntoCondition,
Sourcepub fn order_by_asc<C>(self, col: C) -> Selfwhere
C: ColumnTrait,
pub fn order_by_asc<C>(self, col: C) -> Selfwhere
C: ColumnTrait,
Sourcepub fn order_by_desc<C>(self, col: C) -> Selfwhere
C: ColumnTrait,
pub fn order_by_desc<C>(self, col: C) -> Selfwhere
C: ColumnTrait,
Sourcepub fn order_by<C>(self, col: C, order: Order) -> Selfwhere
C: ColumnTrait,
pub fn order_by<C>(self, col: C, order: Order) -> Selfwhere
C: ColumnTrait,
Sourcepub async fn first_or_fail(self) -> Result<E::Model, FrameworkError>
pub async fn first_or_fail(self) -> Result<E::Model, FrameworkError>
Sourcepub async fn count(self) -> Result<u64, FrameworkError>
pub async fn count(self) -> Result<u64, FrameworkError>
Sourcepub async fn exists(self) -> Result<bool, FrameworkError>
pub async fn exists(self) -> Result<bool, FrameworkError>
Sourcepub fn into_select(self) -> Select<E>
pub fn into_select(self) -> Select<E>
Sourcepub async fn all_with<R, F, Fut>(
self,
loader: F,
) -> Result<(Vec<E::Model>, R), FrameworkError>
pub async fn all_with<R, F, Fut>( self, loader: F, ) -> Result<(Vec<E::Model>, R), FrameworkError>
Execute query and load related entities in a single operation
This method helps avoid N+1 queries by allowing you to batch load related entities after fetching the main results.
§Example
ⓘ
// Load animals with their shelters (2 queries instead of N+1)
let (animals, shelters) = Animal::query()
.filter(Column::Status.eq("available"))
.all_with(|animals| async {
let ids: Vec<_> = animals.iter().map(|a| a.shelter_id).collect();
Shelter::batch_load(ids).await
})
.await?;
// Access related data
for animal in &animals {
if let Some(shelter) = shelters.get(&animal.shelter_id) {
println!("{} is at {}", animal.name, shelter.name);
}
}Sourcepub async fn all_with2<R1, R2, F1, F2, Fut1, Fut2>(
self,
loader1: F1,
loader2: F2,
) -> Result<(Vec<E::Model>, (R1, R2)), FrameworkError>where
F1: FnOnce(&[E::Model]) -> Fut1,
F2: FnOnce(&[E::Model]) -> Fut2,
Fut1: Future<Output = Result<R1, FrameworkError>>,
Fut2: Future<Output = Result<R2, FrameworkError>>,
pub async fn all_with2<R1, R2, F1, F2, Fut1, Fut2>(
self,
loader1: F1,
loader2: F2,
) -> Result<(Vec<E::Model>, (R1, R2)), FrameworkError>where
F1: FnOnce(&[E::Model]) -> Fut1,
F2: FnOnce(&[E::Model]) -> Fut2,
Fut1: Future<Output = Result<R1, FrameworkError>>,
Fut2: Future<Output = Result<R2, FrameworkError>>,
Sourcepub async fn all_with3<R1, R2, R3, F1, F2, F3, Fut1, Fut2, Fut3>(
self,
loader1: F1,
loader2: F2,
loader3: F3,
) -> Result<(Vec<E::Model>, (R1, R2, R3)), FrameworkError>where
F1: FnOnce(&[E::Model]) -> Fut1,
F2: FnOnce(&[E::Model]) -> Fut2,
F3: FnOnce(&[E::Model]) -> Fut3,
Fut1: Future<Output = Result<R1, FrameworkError>>,
Fut2: Future<Output = Result<R2, FrameworkError>>,
Fut3: Future<Output = Result<R3, FrameworkError>>,
pub async fn all_with3<R1, R2, R3, F1, F2, F3, Fut1, Fut2, Fut3>(
self,
loader1: F1,
loader2: F2,
loader3: F3,
) -> Result<(Vec<E::Model>, (R1, R2, R3)), FrameworkError>where
F1: FnOnce(&[E::Model]) -> Fut1,
F2: FnOnce(&[E::Model]) -> Fut2,
F3: FnOnce(&[E::Model]) -> Fut3,
Fut1: Future<Output = Result<R1, FrameworkError>>,
Fut2: Future<Output = Result<R2, FrameworkError>>,
Fut3: Future<Output = Result<R3, FrameworkError>>,
Trait Implementations§
Auto Trait Implementations§
impl<E> Freeze for QueryBuilder<E>
impl<E> !RefUnwindSafe for QueryBuilder<E>
impl<E> Send for QueryBuilder<E>
impl<E> Sync for QueryBuilder<E>
impl<E> Unpin for QueryBuilder<E>where
E: Unpin,
impl<E> UnsafeUnpin for QueryBuilder<E>
impl<E> !UnwindSafe for QueryBuilder<E>
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