private Consumer build()

in data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/GraphQLObjectTypeMapper.java [77:127]


    private Consumer<GraphQLObjectType.Builder> build(DomainDescriptor domain) {
        return builder -> domain.getAttributes().forEach(field -> {
            LOGGER.debug("GraphQL mapping field: {}", field.getName());
            if (KogitoMetadata.class.getName().equals(field.getTypeName())) {
                builder.field(newFieldDefinition().name(KOGITO_DOMAIN_ATTRIBUTE).type(schema.getObjectType("KogitoMetadata"))).build();
            } else {
                GraphQLOutputType type;
                switch (field.getTypeName()) {
                    case "java.lang.Integer":
                        type = Scalars.GraphQLInt;
                        break;
                    case "java.lang.Long":
                        field.setTypeName("Long");
                        type = getGraphQLType(field, schema, additionalTypes, allTypes);
                        break;
                    case "java.lang.Float":
                        type = Scalars.GraphQLFloat;
                        break;
                    case "java.lang.Double":
                        field.setTypeName("BigDecimal");
                        type = getGraphQLType(field, schema, additionalTypes, allTypes);
                        break;
                    case "java.lang.String":
                        type = Scalars.GraphQLString;
                        break;
                    case "java.lang.Boolean":
                        type = Scalars.GraphQLBoolean;
                        break;
                    case "java.time.LocalDate":
                        type = ExtendedScalars.Date;
                        break;
                    case "java.util.Date":
                    case "java.time.LocalDateTime":
                    case "java.time.ZonedDateTime":
                    case "kogito.Date":
                    case "kogito.Instant":
                        field.setTypeName("DateTime");
                    default:
                        type = getGraphQLType(field, schema, additionalTypes, allTypes);
                }
                if (type != null) {
                    if (field.getLabel() != null && field.getLabel().contains("REPEATED")) {
                        GraphQLOutputType listOfType = new GraphQLList(type);
                        builder.field(newFieldDefinition().name(field.getName()).type(listOfType));
                    } else {
                        builder.field(newFieldDefinition().name(field.getName()).type(type));
                    }
                }
            }
        });
    }