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

Convert Golang Struct To GraphQL Object On The Fly

License

NotificationsYou must be signed in to change notification settings

ThundR67/straf

Repository files navigation

Go Report CardGoDocGoCover

Straf

  1. Convert Golang Struct To GraphQL Object On The Fly
  2. Easily Create GraphQL Schemas

Example

Converting struct to GraphQL Object

typeUserExtrastruct {Ageint`description:"Age of the user"`// You can use description struct tag to add descriptionGenderstring`deprecationReason:"Some Reason"`// You can use deprecationReason tag to add a deprecation reason}typeUserstruct {UserIDintUsernamestring`unique:"true"`// You can use unique tag to define if a field would be uniqueExtraUserExtraPasswordstring`exclude:"true"`// You can use exclude tag to exclude a field}funcmain() {// GetGraphQLObject will convert golang struct to a graphQL objectuserType,err:=straf.GetGraphQLObject(User{})// You can then use userType in your graphQL schema}

Using The Schema Builder

typeUserstruct {UserIDint`isArg:"true"`// You can use isArg tag to define a field as a graphql argumentUsernamestring`isArg:"true"`}vardatabase []User= []User{}funcmain() {// GetGraphQLObject will convert golang struct to a graphQL objectuserType,err:=straf.GetGraphQLObject(User{})builder:=straf.NewSchemaBuilder(userType,User{})builder.AddArgumentsFromStruct(object2{})// You can use this function to add more arguments from a structbuilder.AddFunction("CreateUser","Adds a user to database",func(params graphql.ResolveParams) (interface{},error)) {id:=params.Args["UserID"]username:=params.Args["Username"]database=append(database,User{UserID:id,Username:Username})                        })schema:=builder.Schema// You can then use this schema}

Using Middleware In Schema Builder

funcmiddleware(functionfunc(graphql.ResolveParams) (interface{},error),params graphql.ResolveParams) (interface{},error) {fmt.Println("This function will run as a middleware")returnfunction(params)}funcmain() {builder:=straf.NewSchemaBuilder(userType,User{},middleware)builder.AddFunction("SomeFunction","Does Something",someFunction)// Here the middleware function would run everytime before someFunction. middleware function would act as a middleware to all functions added to schema builder.}

Author

Roshan Jignesh Mehta -sonicroshan122@gmail.com

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp