graphql_federated_graph/directives/
federation.rs1use crate::{InterfaceId, ObjectId, OverrideLabel, OverrideSource, SelectionSet, StringId, SubgraphId, Type};
2
3#[derive(Clone, PartialEq, PartialOrd, Debug)]
13pub struct JoinTypeDirective {
14    pub subgraph_id: SubgraphId,
15    pub key: Option<SelectionSet>,
16    pub resolvable: bool,
17    pub is_interface_object: bool,
18}
19
20#[derive(Default, Clone, PartialEq, PartialOrd, Debug)]
32pub struct JoinFieldDirective {
33    pub subgraph_id: Option<SubgraphId>,
34    pub requires: Option<SelectionSet>,
35    pub provides: Option<SelectionSet>,
36    pub r#type: Option<Type>,
37    pub external: bool,
38    pub r#override: Option<OverrideSource>,
39    pub override_label: Option<OverrideLabel>,
40}
41
42#[derive(Clone, PartialEq, PartialOrd, Debug)]
49pub struct JoinImplementsDirective {
50    pub subgraph_id: SubgraphId,
51    pub interface_id: InterfaceId,
52}
53
54#[derive(Clone, PartialEq, PartialOrd, Debug)]
61pub struct JoinUnionMemberDirective {
62    pub subgraph_id: SubgraphId,
63    pub object_id: ObjectId,
64}
65
66#[derive(Clone, PartialEq, PartialOrd, Debug)]
72pub struct JoinEnumValueDirective {
73    pub subgraph_id: SubgraphId,
74}
75
76#[derive(Clone, PartialEq, PartialOrd, Debug)]
80pub struct JoinGraphDirective {
81    pub name: StringId,
82    pub url: Option<StringId>,
83}