public OutputTypeModel AnalyzeOperation( IDocumentAnalyzerContext context, SelectionSetVariants selectionSetVariants) { Path rootSelectionPath = Path.Root.Append(context.OperationName); FragmentNode returnTypeFragment = FragmentHelper.CreateFragmentNode( context.OperationType, rootSelectionPath, selectionSetVariants.ReturnType); returnTypeFragment = FragmentHelper.RewriteForConcreteType(returnTypeFragment); OutputTypeModel returnType = FragmentHelper.CreateInterface( context, returnTypeFragment, rootSelectionPath); FragmentHelper.CreateClass( context, returnTypeFragment, selectionSetVariants.ReturnType, returnType); return(returnType); }
private OutputTypeModel AnalyzeWithDefaults( IDocumentAnalyzerContext context, FieldSelection fieldSelection, SelectionSetVariants selectionVariants) { FragmentNode returnTypeFragment = FragmentHelper.CreateFragmentNode( selectionVariants.ReturnType, fieldSelection.Path); OutputTypeModel returnType = FragmentHelper.CreateInterface( context, returnTypeFragment, fieldSelection.Path); context.RegisterSelectionSet( returnType.Type, selectionVariants.ReturnType.SyntaxNode, returnType.SelectionSet); foreach (SelectionSet selectionSet in selectionVariants.Variants) { returnTypeFragment = FragmentHelper.CreateFragmentNode( selectionSet, fieldSelection.Path, appendTypeName: true); returnTypeFragment = FragmentHelper.RewriteForConcreteType(returnTypeFragment); OutputTypeModel @interface = FragmentHelper.CreateInterface( context, returnTypeFragment, fieldSelection.Path, new[] { returnType }); OutputTypeModel @class = FragmentHelper.CreateClass( context, returnTypeFragment, selectionSet, @interface); context.RegisterSelectionSet( selectionSet.Type, selectionSet.SyntaxNode, @class.SelectionSet); } return(returnType); }