graphql-composition 0.12.2

An implementation of GraphQL federated schema composition
Documentation
use super::{
    directive::write_directive,
    display_utils::{INDENT, ValueDisplay, render_field_type, write_description},
};
use crate::federated_graph::{Directive, FederatedGraph, InputValueDefinition};
use std::fmt;

pub(crate) fn display_input_value_definition(
    input_value_definition: &InputValueDefinition,
    graph: &FederatedGraph,
    directives_filter: fn(&Directive) -> bool,
    f: &mut fmt::Formatter<'_>,
) -> fmt::Result {
    write_description(f, input_value_definition.description, INDENT, graph)?;
    let input_value_definition_name = &graph[input_value_definition.name];
    f.write_str(input_value_definition_name)?;
    f.write_str(": ")?;
    f.write_str(&render_field_type(&input_value_definition.r#type, graph))?;

    if let Some(default) = &input_value_definition.default {
        write!(f, " = {}", ValueDisplay(default, graph))?;
    }

    let mut filtered_directives = input_value_definition
        .directives
        .iter()
        .filter(|directive| directives_filter(directive))
        .peekable();

    if filtered_directives.peek().is_some() {
        for directive in filtered_directives {
            f.write_str(" ")?;
            write_directive(f, directive, graph)?;
        }
    }

    Ok(())
}