[][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

NameDescriptionDefaultExample
model_fieldThe field on the contained type that holds the model{name of contained type} in snakecasemodel_field = company
join_modelThe model we have to join withN/Ajoin_model = models::Employment
child_primary_key_field_on_join_modelThe field on the join model that holds the primary key of the child model (Company in the example above){name of model}_idchild_primary_key_field_on_join_model = company_identifier
foreign_key_fieldThe field on the join model that holds the primary key of the parent model (User in the example above){name of model}_idforeign_key_field = user_identifier
child_primary_key_fieldThe field on the child model that holds its primary keyidforeign_key_field = identifier
graphql_fieldThe name of this field in your GraphQL schema{name of field}graphql_field = country
predicate_methodMethod 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

Additionally it also supports the attributes print, skip, and field_arguments. See the root model docs for more into on those.

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.

Trait Implementations

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

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

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

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

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

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

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

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

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

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

Auto Trait Implementations

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

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

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

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

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

Blanket Implementations

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

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

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

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

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

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

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

type Owned = T

The resulting type after obtaining ownership.

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.