visitInputObjectTypeDefinitionNode method
Visit InputObjectTypeDefinitionNode
.
Implementation
@override
void visitInputObjectTypeDefinitionNode(InputObjectTypeDefinitionNode node) {
inputObjects[node.name.value] = () {
final name = ClassName(name: node.name.value);
final nextContext = context.sameTypeWithNoPath(
alias: name,
ofUnion: Nullable<TypeDefinitionNode?>(null),
);
logFn(context, nextContext.align, '-> Input class');
logFn(context, nextContext.align,
'┌ ${nextContext.path}[${node.name.value}]');
final properties = <ClassProperty>[];
properties.addAll(node.fields.map((i) {
final nextType =
gql.getTypeByName(nextContext.typeDefinitionNodeVisitor, i.type);
return createClassProperty(
fieldName: ClassPropertyName(name: i.name.value),
context: nextContext.nextTypeWithNoPath(
nextType: node,
nextClassName: ClassName(name: nextType.name.value),
nextFieldName: ClassName(name: i.name.value),
ofUnion: Nullable<TypeDefinitionNode?>(null),
),
markAsUsed: false,
);
}));
logFn(context, nextContext.align,
'└ ${nextContext.path}[${node.name.value}]');
logFn(context, nextContext.align,
'<- Generated input class ${name.namePrintable}.');
return ClassDefinition(
isInput: true,
name: name,
properties: properties,
);
};
}