diff --git a/gql.go b/gql.go index c793c1b..9204df8 100644 --- a/gql.go +++ b/gql.go @@ -19,11 +19,15 @@ type requestBase struct { func queryBuilder(data string, variables interface{}) ([]byte, error) { var err error - var qb requestBase - qb.Query = data - qb.Variables = variables + var qb = &requestBase{ + Query: data, + Variables: variables, + } j := new(bytes.Buffer) - j2, _ := json.Marshal(qb) + j2, err := json.Marshal(qb) + if err != nil { + return []byte{}, err + } if err = json.Compact(j, j2); err != nil { return []byte{}, err } @@ -37,6 +41,7 @@ func Query(query string, variables interface{}, headers map[string]interface{}) return "", err } req := fasthttp.AcquireRequest() + defer fasthttp.ReleaseRequest(req) req.Header.SetContentType("application/json") for header, value := range headers { req.Header.Set(fmt.Sprintf("%v", header), fmt.Sprintf("%v", value)) @@ -45,35 +50,15 @@ func Query(query string, variables interface{}, headers map[string]interface{}) req.SetBody(readyQuery) req.SetRequestURI(GraphQLUrl) res := fasthttp.AcquireResponse() + defer fasthttp.ReleaseResponse(res) if err := fasthttp.Do(req, res); err != nil { return "", err } - fasthttp.ReleaseRequest(req) body := res.Body() toReturn := gjson.Get(string(body), "data") if toReturn.String() == "" { err = errors.New(string(body)) return "", err } - fasthttp.ReleaseResponse(res) return toReturn.String(), err } - -// func main() { -// headers := map[string]interface{}{ -// "x-hasura-user-id": 37, -// "x-hasura-user-uuid": "bde3262e-b42e-4151-ac10-d43fb38f44a5", -// } -// variables := map[string]interface{}{ -// "UserID": 37, -// "GroupID": 11007, -// } -// var query = `query checkifUserIsAdmin($UserID: bigint, $GroupID: bigint) { -// tbl_user_group_admins(where: {is_admin: {_eq: "1"}, user_id: {_eq: $UserID}, group_id: {_eq: $GroupID}}) { -// id -// is_admin -// } -// }` -// result := Query(query, variables, headers) -// fmt.Println(result) -// } diff --git a/gql_test.go b/gql_test.go index 93878a1..d9eca7b 100644 --- a/gql_test.go +++ b/gql_test.go @@ -1,7 +1,6 @@ package gql import ( - "fmt" "testing" "github.com/stretchr/testify/assert" @@ -40,8 +39,9 @@ func Test_queryBuilder(t *testing.T) { for _, tt := range tests { assert := assert.New(t) t.Run(tt.name, func(t *testing.T) { - gets, _ := queryBuilder(tt.args.data, tt.args.variables) - assert.Equal(tt.want, string(gets), fmt.Sprintf("Unexpected query output in test %s", tt.name)) + gets, err := queryBuilder(tt.args.data, tt.args.variables) + assert.Equal(tt.want, string(gets), "Unexpected query output in test: "+tt.name) + assert.Nil(err) }, ) }