buildSerializer function

dynamic buildSerializer(
  1. GraphQLScanResult model,
  2. CodeBuilder code
)

Implementation

buildSerializer(GraphQLScanResult model, CodeBuilder code) {
  _log.info('Writing Concrete Class');
  code += [
    'class ${model.className}Json {',
    '  EntityReader? getReader(name) {',
    '    switch(name) {',
    for (var model in [
      ...model.inputTypes.values.map((model) => model.name.value),
      ...model.objectTypes.values.map((model) => model.name.value),
      ...model.enumTypes.values.map((model) => model.name.value),
      ...model.unionTypes.values.map((model) => model.name.value),
      ...model.typedefs.keys,
      ...model.joinRecords,
    ])
      '      case "${model}": return (_) => ${model}.fromJson(_);',
    '      default: return null;'
        '    }',
    '  }',
    '',
    '  EntityWriter? getWriter(name) {',
    '    switch(name) {',
    for (var model in [
      ...model.inputTypes.values.map((model) => model.name.value),
      ...model.objectTypes.values.map((model) => model.name.value),
      ...model.enumTypes.values.map((model) => model.name.value),
      ...model.unionTypes.values.map((model) => model.name.value),
      ...model.typedefs.keys,
      ...model.joinRecords,
    ])
      '      case "${model}": return (from) => from?.toJson();',
    '      default: return null;',
    '    }',
    '  }',
    '}',
    '',
  ];
}