shurcooL / githubv4

Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql).
MIT License
1.1k stars 89 forks source link

How can i run multiple mutation #113

Open liangyuanpeng opened 1 year ago

liangyuanpeng commented 1 year ago
mutation {
  createDiscussion(input: {
    repositoryId: "abc"
    title: "first discussion title"
    body: "first discussion body"
    categoryId: "asd"
  }) {
    discussion {
      id
    }
  }
  addDiscussionComment(input: {
    discussionId: "asd"
    body: "first discussion reply!"
  }) {
    comment {
      id
    }
  }
} 

I want to use this lib to request this graphql and i just can let it work for one mutation:

mutation {
  createDiscussion(input: {
    repositoryId: "abc"
    title: "first discussion title"
    body: "first discussion body"
    categoryId: "asd"
  })

This is the code for it:

var m struct {
        CreateDiscussion struct {
            Discussion struct {
                Repository struct {
                    ID githubv4.ID
                }
                Title    githubv4.String
                Body     githubv4.String
                Category struct {
                    ID githubv4.ID
                }
            }
        } `graphql:"createDiscussion(input:$input)"`
    }
    input := githubv4.CreateDiscussionInput{
        RepositoryID: "asd",
        Title:        githubv4.String("first discussion title"),
        Body:         githubv4.String("first discussion body!"),
        CategoryID:   "asd",
    }
    err := ghV4Client.Mutate(context.Background(), &m, input, nil)
    if err != nil {
        panic(err)
    }

Thanks any help and this project is great, Thanks for your work.

liangyuanpeng commented 1 year ago

Just work for this graphql also great:

mutation {
  createDiscussion(input: {
    repositoryId: "abc"
    title: "first discussion title"
    body: "first discussion body"
    categoryId: "asd"
  })
}