graphql_federated_graph/federated_graph/
enum_definitions.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use super::{Directive, EnumDefinitionId, FederatedGraph, StringId};

pub type EnumDefinition<'a> = super::view::ViewNested<'a, EnumDefinitionId, EnumDefinitionRecord>;

impl std::fmt::Debug for EnumDefinition<'_> {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.debug_struct("EnumDefinition")
            .field("name", &self.then(|ty| ty.name).as_str())
            .finish_non_exhaustive()
    }
}

#[derive(Clone, Debug)]
pub struct EnumDefinitionRecord {
    pub namespace: Option<StringId>,
    pub name: StringId,
    pub directives: Vec<Directive>,
    pub description: Option<StringId>,
}

impl FederatedGraph {
    pub fn push_enum_definition(&mut self, enum_definition: EnumDefinitionRecord) -> EnumDefinitionId {
        let id = self.enum_definitions.len().into();
        self.enum_definitions.push(enum_definition);
        id
    }
}