[][src]Struct juniper_eager_loading::HasManyThrough

pub struct HasManyThrough<T>(_);

A "has many through" association.

Imagine you have these models:

struct User {
    id: i32,
}

struct Company {
    id: i32,
}

struct Employments {
    id: i32,
    user_id: i32,
    company_id: i32,
}

For this setup we say "user has many companies through employments". This means uses can work at many companies and companies can have many employees, provided that we join with Employment.

This requires that we use the JoinModel type on EagerLoadChildrenOfType and is therefore a bit different from the other associations since it involves a third type.

Example

You can find a complete example of HasManyThrough here.

Attributes

Name Description Default Example
model The database model type models::{name of contained type} model = "models::Car"
model_field The field on the contained type that holds the model {name of contained type} in snakecase model_field = "company"
join_model The model we have to join with N/A join_model = "models::Employment"
join_model_field The field on the join model type that holds the model {name of join model type} in snakecase join_model_field = "employment"
graphql_field The name of this field in your GraphQL schema {name of field} graphql_field = "country"
predicate_method Method used to filter child associations. This can be used if you only want to include a subset of the models. This method will be called to filter the join models. N/A (attribute is optional) predicate_method = "a_predicate_method"

Errors

try_unwrap will never error. If the association wasn't loaded or wasn't found it will return Ok(vec![]).

Methods

impl<T> HasManyThrough<T>[src]

pub fn try_unwrap(&self) -> Result<&Vec<T>, Error>[src]

Borrow the loaded values. If no values have been loaded it will return an empty list. It will not return an error.

pub fn loaded(&mut self, inner: T)[src]

Add the loaded value to the list.

pub fn assert_loaded_otherwise_failed(&mut self)[src]

This function doesn't do anything since the default is an empty list and there is no error state.

Trait Implementations

impl<T: Eq> Eq for HasManyThrough<T>[src]

impl<T: Ord> Ord for HasManyThrough<T>[src]

fn max(self, other: Self) -> Self1.21.0[src]

Compares and returns the maximum of two values. Read more

fn min(self, other: Self) -> Self1.21.0[src]

Compares and returns the minimum of two values. Read more

fn clamp(self, min: Self, max: Self) -> Self[src]

🔬 This is a nightly-only experimental API. (clamp)

Restrict a value to a certain interval. Read more

impl<T: PartialEq> PartialEq<HasManyThrough<T>> for HasManyThrough<T>[src]

impl<T: Clone> Clone for HasManyThrough<T>[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<T: PartialOrd> PartialOrd<HasManyThrough<T>> for HasManyThrough<T>[src]

impl<T> Default for HasManyThrough<T>[src]

impl<T: Debug> Debug for HasManyThrough<T>[src]

Auto Trait Implementations

impl<T> Send for HasManyThrough<T> where
    T: Send

impl<T> Sync for HasManyThrough<T> where
    T: Sync

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]