package com.kobylynskyi.graphql.codegen.mapper; import com.kobylynskyi.graphql.codegen.model.MappingConfig; import graphql.language.InputObjectTypeDefinition; import java.util.HashMap; import java.util.Map; import static com.kobylynskyi.graphql.codegen.model.DataModelFields.*; /** * Map input type definition to a Freemarker data model * * @author kobylynskyi */ public class InputDefinitionToDataModelMapper { /** * Map input type definition to a Freemarker data model * * @param mappingConfig Global mapping configuration * @param typeDefinition GraphQL type definition * @return Freemarker data model of the GraphQL type */ public static Map map(MappingConfig mappingConfig, InputObjectTypeDefinition typeDefinition) { Map dataModel = new HashMap<>(); String packageName = MapperUtils.getModelPackageName(mappingConfig); dataModel.put(PACKAGE, packageName); dataModel.put(IMPORTS, MapperUtils.getImports(mappingConfig, packageName)); dataModel.put(CLASS_NAME, MapperUtils.getClassNameWithPrefixAndSuffix(mappingConfig, typeDefinition)); dataModel.put(NAME, typeDefinition.getName()); dataModel.put(FIELDS, InputValueDefinitionToParameterMapper.map(mappingConfig, typeDefinition.getInputValueDefinitions())); return dataModel; } }