gql-query-builder
gql-query-builder copied to clipboard
More complex examples
The project needs documentation for more advanced examples. E.g. how to generate such a query?
query GetCount($language: [String!], $gender: [String!], $function: [String!], $city: [String!]) {
person_aggregate(where: {_and:
{language: {_in: $language}, gender: {_in: $gender},
employees: {function: {description: {_in: $function}}}},
postaladdresses: {city: {_in: $city}}}) {
aggregate {
count(columns: id, distinct: true)
}
}
}
Hello,
you can using graphql-query package:
from graphql_query import Argument, Field, Operation, Query, Variable
var_language = Variable(name="language", type="[String!]")
var_gender = Variable(name="gender", type="[String!]")
var_function = Variable(name="function", type="[String!]")
var_city = Variable(name="city", type="[String!]")
arg_language = Argument(name="language", value=Argument(name="_in", value=var_language))
arg_gender = Argument(name="gender", value=Argument(name="_in", value=var_gender))
arg_description = Argument(name="description", value=Argument(name="_in", value=var_function))
arg_city = Argument(name="city", value=Argument(name="_in", value=var_city))
person_aggregate = Query(
name="person_aggregate",
arguments=[
Argument(
name="where",
value=[
Argument(
name="_and",
value=[
arg_language,
arg_gender,
Argument(name="employees", value=Argument(name="function", value=arg_description))
]
),
Argument(name="postaladdresses", value=arg_city)
]
)
],
fields=[
Field(
name="aggregate",
fields=[
Field(
name="count",
arguments=[
Argument(name="columns", value="id"),
Argument(name="distinct", value="true"),
]
)
]
)
]
)
GetCount = Operation(
type="query",
name="GetCount",
variables=[var_language, var_gender, var_function, var_city],
queries=[person_aggregate],
)
print(GetCount.render())
# query GetCount(
# $language: [String!]
# $gender: [String!]
# $function: [String!]
# $city: [String!]
# ) {
# person_aggregate(
# where: {
# _and: {
# language: {
# _in: $language
# }
# gender: {
# _in: $gender
# }
# employees: {
# function: {
# description: {
# _in: $function
# }
# }
# }
# }
# postaladdresses: {
# city: {
# _in: $city
# }
# }
# }
# ) {
# aggregate {
# count(
# columns: id
# distinct: true
# )
# }
# }
# }