Package: gql-query-builder
gql-query-builderThis is a GraphQL query builder.Use with method chain.Installpip install gql-query-builderUsagequeryfromgql_query_builderimportGqlQueryquery=GqlQuery().fields(['name']).query('hero').operation().generate()print(query)"""query {hero {name}}"""mutationfromgql_query_builderimportGqlQueryquery=GqlQuery().fields(['stars','commentary']).query('createReview',input={"episode":"$ep","review":"$review"}).operation('mutation',name='CreateReviewForEpisode',input={"$ep":"Episode!","$review":"ReviewInput!"}).generate()print(query)"""mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {createReview(episode: $ep, review: $review) {starscommentary}}"""Methodsfields()build response fields.#Syntaxfields(fields:List[str]=[],name:str='',condition_expression:str='')query()build query fields.#Syntaxquery(name:str='',alias:str='',input:Dict[str,Union[str,int]]={})operation()build operation fields.#Syntaxoperation(query_type:str='query',name:str='',input:Dict[str,Union[str,int]]={},queries:List[str]=[])fragment()build fragment fields.#Syntaxfragment(name:str,interface:str)generate()generate query.#Syntaxgenerate()ExamplesNesting fieldsfromgql_query_builderimportGqlQueryfield_friends=GqlQuery().fields(['name'],name='friends').generate()query=GqlQuery().fields(['name',field_friends]).query('hero').operation('query').generate()print(query)"""query {hero {namefriends {name}}}"""Query with inputfromgql_query_builderimportGqlQueryquery=GqlQuery().fields(['name','height']).query('human',input={"id":'"1000"'}).operation().generate()print(query)"""query {human(id: "1000") {nameheight}}"""Query with nested inputfromgql_query_builderimportGqlQueryGqlQuery().fields(['name','height']).query('human',input={"input":{"data":{"id":"1000","name":"test"}}}).operation().generate()"""query{human(input: {data: {id: "1000", name: "test"}}){human{name,height}}}"""Query with input and argumentsfromgql_query_builderimportGqlQueryquery=GqlQuery().fields(['name','height(unit: FOOT)']).query('human',input={"id":'"1000"'}).operation().generate()print(query)"""query {human(id: "1000") {nameheight(unit: FOOT)}}"""Aliasfromgql_query_builderimportGqlQueryquery_empirehero=GqlQuery().fields(['name']).query('hero',alias='empireHero',input={"episode":'EMPIRE'}).generate()query_jedihero=GqlQuery().fields(['name']).query('hero',alias='jediHero',input={"episode":'JEDI'}).generate()query=GqlQuery().operation('query',queries=[query_empirehero,query_jedihero]).generate()print(query)"""query {empireHero: hero(episode: EMPIRE) {name}jediHero: hero(episode: JEDI) {name}}"""Fragmentsfromgql_query_builderimportGqlQueryfield_friends=GqlQuery().fields(['name'],name='friends').generate()query=GqlQuery().fields(['name','appearsIn',field_friends]).fragment('comparisonFields','Character').generate()print(query)"""fragment comparisonFields on Character {nameappearsInfriends {name}}"""Refer to fragmentsfromgql_query_builderimportGqlQueryquery_leftComparison=GqlQuery().fields(['...comparisonFields']).query('hero',alias='leftComparison',input={"episode":"EMPIRE"}).generate()query_rightComparison=GqlQuery().fields(['...comparisonFields']).query('hero',alias='rightComparison',input={"episode":"JEDI"}).generate()query=GqlQuery().operation('query',queries=[query_leftComparison,query_rightComparison]).generate()print(query)"""query {leftComparison: hero(episode: EMPIRE) {...comparisonFields}rightComparison: hero(episode: JEDI) {...comparisonFields}}"""Query with variablesfromgql_query_builderimportGqlQueryfield_friends=GqlQuery().fields(['name'],name='friends').generate()query=GqlQuery().fields(['name',field_friends]).query('hero',input={"episode":"$episode"}).operation('query',name='HeroNameAndFriends',input={"$episode":"Episode"}).generate()print(query)"""query HeroNameAndFriends($episode: Episode) {hero(episode: $episode) {namefriends {name}}}"""Directivesfromgql_query_builderimportGqlQueryfield_friends=GqlQuery().fields(['name'],name='friends @include(if: $withFriends)').generate()query=GqlQuery().fields(['name',field_friends]).query('hero',input={"episode":"$episode"}).operation('query',name='Hero',input={"$episode":"Episode","$withFriends":"Boolean!"}).generate()print(query)"""query Hero($episode: Episode, $withFriends: Boolean!) {hero(episode: $episode) {namefriends @include(if: $withFriends) {name}}}"""