generateInputClass static method

ClassDefinition generateInputClass(
  1. InputObjectTypeDefinitionNode node,
  2. Context context
)

Generates an input class definition from a GraphQL input object type definition node

Implementation

static ClassDefinition generateInputClass(
  InputObjectTypeDefinitionNode node,
  Context context,
) {
  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 = generateInputProperties(node.fields, nextContext);

  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,
  );
}