rusty_gql/types/
interface.rs

1use graphql_parser::{schema::InterfaceType as ParserInterfaceType, Pos};
2
3use super::{directive::GqlDirective, field::FieldType};
4
5#[derive(Debug, Clone)]
6pub struct InterfaceType {
7    pub name: String,
8    pub description: Option<String>,
9    pub position: Pos,
10    pub directives: Vec<GqlDirective>,
11    pub fields: Vec<FieldType>,
12}
13
14impl<'a> From<ParserInterfaceType<'a, String>> for InterfaceType {
15    fn from(interface_type: ParserInterfaceType<'a, String>) -> Self {
16        let directives = GqlDirective::from_vec_directive(interface_type.directives);
17        let fields = interface_type
18            .fields
19            .into_iter()
20            .map(FieldType::from)
21            .collect();
22
23        InterfaceType {
24            name: interface_type.name,
25            description: interface_type.description,
26            position: interface_type.position,
27            directives,
28            fields,
29        }
30    }
31}