caffeinetv / CaffQL

GraphQL c++ client code generator

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Invalid requests generated for queries without input variables

davjo664 opened this issue · comments

When generating requests for queries without any variables the query becomes:

static Json request() {
    Json query = R"(
        query Orders(
        ) {
            orders {
                id
                orderNo
            }
        }
    )";
    Json variables;
    return {{"query", std::move(query)}, {"variables", std::move(variables)}};
}

This results in an error when sending the query to my GraphQL API because of the empty variables input query Orders( ) { .... } it should be query Orders { ... }.

Would appreciate if this issue could be solved. 👍

Suggested solution in CodeGeneration.cpp:

QueryDocument generateQueryDocument(
        Field const & field, Operation operation, TypeMap const & typeMap, size_t indentation) {
    QueryDocument document;
    auto & query = document.query;
    auto & variables = document.variables;

    auto selectionSet = generateQueryField(field, typeMap, "", variables, indentation + 1);

    query += indent(indentation) + operationQueryName(operation) + " " + capitalize(field.name);

    if (variables.size()) {
        query += "(\n";
        for (auto const & variable : variables) {
            query += indent(indentation + 1) + "$" + variable.name + ": " + graphqlTypeName(variable.type) + "\n";
        }
        query += indent(indentation) + ")";
    }

    query += " {\n";
    query += selectionSet;
    query += indent(indentation) + "}\n";

    return document;
}