Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Auto-generate GraphQL Type, Resolver and Query.

License

NotificationsYou must be signed in to change notification settings

syfun/gqlcli

Repository files navigation

Auto-generate GraphQL Type, Resolver and Query.

Installation

pip install gqlcli

TODO

  • more rule for client command
  • support schema directory

Usage

Usage: gqlcli [OPTIONS] COMMAND [ARGS]...Options:  -f, --file TEXT  graphql sdl file, file extension may be .gql or .graphql  --help           Show this message and exit.Commands:  all  Generate all schema types  c    Generate client query  fr   Generate field resolver.  postman  Export all client query to postman.  pt   Printtype definition  t    Generate onetype  tr   Generatetype resolver

-f option will auto find sdl file with.gql or.graphql extension in current dir.

gqlcli -p schema.graphql same withgqlcli

GraphQL schema example:

enumEpisode { NEWHOPE, EMPIRE, JEDI }interfaceCharacter {id:String!name:Stringfriends: [Character]appearsIn: [Episode]}typeHumanimplementsCharacter {id:String!name:Stringfriends: [Character]appearsIn: [Episode]homePlanet:String}typeDroidimplementsCharacter {id:String!name:Stringfriends: [Character]appearsIn: [Episode]primaryFunction:String}typeQuery {hero(episode:Episode):Characterhuman(id:String!):Humandroid(id:String!):Droid}

all

all command can generate all schema types, based on default class, dataclass or pydantic, default is pydantic.

gqlcli all --kind pydantic

fromenumimportEnumfromtypingimportAny,Dict,List,NewType,Optional,Text,Unionfromgqlimportenum_type,type_resolverfrompydanticimportBaseModelID=NewType('ID',Text)@enum_typeclassEpisode(Enum):NEWHOPE=1EMPIRE=2JEDI=3classCharacter(BaseModel):id:Textname:Optional[Text]friends:Optional[List[Optional['Character']]]appears_in:Optional[List[Optional[Episode]]]classHuman(Character):id:Textname:Optional[Text]friends:Optional[List[Optional['Character']]]appears_in:Optional[List[Optional[Episode]]]home_planet:Optional[Text]classDroid(Character):id:Textname:Optional[Text]friends:Optional[List[Optional['Character']]]appears_in:Optional[List[Optional[Episode]]]primary_function:Optional[Text]@type_resolver('Character')defresolve_character_type(obj,info,type_):ifisinstance(obj,Human):return'Human'ifisinstance(obj,Droid):return'Droid'returnNone

forgql package, please seepython-gql for detail.

client

c command generate query string.

gqlcli c hero

queryhero($episode:Episode) {hero(episode:$episode) {idnamefriendsappearsIn  }}

field resolver

fr command generate field resolver.

gqlcli fr Query hero

@querydefhero(parent,info,episode:Optional[Episode])->Optional['Character']:pass

type resolver

tr command generate type resolver.

gqlcli tr Character

@type_resolver('Character')defresolve_character_type(obj,info,type_):ifisinstance(obj,Human):return'Human'ifisinstance(obj,Droid):return'Droid'returnNone

type

t command generate given type.

gqlcli c Character

classCharacter(BaseModel):id:Textname:Optional[Text]friends:Optional[List[Optional['Character']]]appears_in:Optional[List[Optional[Episode]]]

print

pt command print type definition.

gqlcli pt Character

interfaceCharacter {id:String!name:Stringfriends: [Character]appearsIn: [Episode]}

postman

Generate a postman collection.

Example:

gqlcli -p ./schema.graphql  postman -H X-Authenticated-Scope:authenticated -H X-Authenticated-Userid:"{\"id\": \"{{USER}}\", \"meta\": {\"company_id\": {{COMPANY}}, \"is_superuser\": {{SUPERUSER}}}}" -H Authorization:"Token {{TOKEN}}" example

About

Auto-generate GraphQL Type, Resolver and Query.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp