Struct warpgrapher::engine::config::Relationship
source · [−]pub struct Relationship { /* private fields */ }
Expand description
Configuration item for a relationship on a GraphQL type
Examples
let r = Relationship::new(
"teams".to_string(),
true,
vec!["User".to_string()],
vec![],
EndpointsFilter::all(),
None
);
Implementations
Creates a new Relationship struct.
Arguments
- a String for the name of the relationship
- a boolean that, if true, indicates that the property is a list, and if false, that the relationship is to a single node
- a list of possible destination node types for the relationship. A single element in the list indicates that this is a single-type relationship, whereas more than one element indicates a multi-type relationship.
- an
EndpointsFilter
struct indicating which of the standard operations (create, read, update, and delete) should be generated for this relationship - an optional string providing the name of a resolver, if the relationship is a dynamic relationship with a custom resolver
Examples
let r = Relationship::new("name".to_string(), false, vec!["User".to_string()], vec![],
EndpointsFilter::all(), None);
Returns the EndpointsFilter
struct that indicates which of the four basic Create, Read,
Update, and Delete (CRUD) operations Warpgrapher should auto-generate for this
relationship.
Examples
let r = Relationship::new("name".to_string(), false, vec!["User".to_string()], vec![],
EndpointsFilter::all(), None);
assert_eq!(&EndpointsFilter::all(), r.endpoints());
Returns true if the relationship is a list, indicating a one-to-many (or many-to-many) relationship. Returns false if the node can only have one relationship of this type.
Examples
let r = Relationship::new("name".to_string(), true, vec!["User".to_string()], vec![],
EndpointsFilter::all(), None);
assert!(r.list());
Returns the name of the relationship
Examples
let r = Relationship::new("RelName".to_string(), true, vec!["User".to_string()], vec![],
EndpointsFilter::all(), None);
assert_eq!("RelName", r.name());
Returns an iterator over the names of the Warpgrapher Type
definitions that are
possible destination nodes for this relationship.
Examples
let r = Relationship::new("RelName".to_string(), true, vec!["User".to_string()], vec![],
EndpointsFilter::all(), None);
assert_eq!(1, r.nodes().count());
assert_eq!("User", r.nodes().next().expect("Expected an element"));
Returns an option for a string containing the name of a custom resolver, if this relationship is resolved by a custom resolver instead of an auto-generated read resolver.
Examples
let r = Relationship::new("RelName".to_string(), true, vec!["User".to_string()], vec![],
EndpointsFilter::all(), None);
assert!(r.resolver().is_none())
Trait Implementations
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
This method tests for !=
.
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Auto Trait Implementations
impl RefUnwindSafe for Relationship
impl Send for Relationship
impl Sync for Relationship
impl Unpin for Relationship
impl UnwindSafe for Relationship
Blanket Implementations
Mutably borrows from an owned value. Read more
Compare self to key
and return true
if they are equal.
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more