add option to force using a pointer

This commit is contained in:
Ben Kraft
2021-04-12 16:01:21 -07:00
parent 74411faf52
commit e597cac74c
14 changed files with 351 additions and 65 deletions
+3
View File
@@ -3,9 +3,12 @@ query OmitEmptyQuery(
$query: UserQueryInput,
$dt: DateTime,
$tz: String,
# @genqlient(omitempty: false)
$tzNoOmitEmpty: String,
) {
user(query: $query) {
id
}
maybeConvert(dt: $dt, tz: $tz)
convert2: maybeConvert(dt: $dt, tz: $tzNoOmitEmpty)
}
+8 -19
View File
@@ -12,6 +12,7 @@ import (
type OmitEmptyQueryResponse struct {
User OmitEmptyQueryUser `json:"user"`
MaybeConvert time.Time `json:"maybeConvert"`
Convert2 time.Time `json:"convert2"`
}
type OmitEmptyQueryUser struct {
@@ -38,26 +39,13 @@ func OmitEmptyQuery(
query UserQueryInput,
dt time.Time,
tz string,
tzNoOmitEmpty string,
) (*OmitEmptyQueryResponse, error) {
variables := map[string]interface{}{
"query": nil,
"dt": nil,
"tz": nil,
}
var zero_query UserQueryInput
if query != zero_query {
variables["query"] = query
}
var zero_dt time.Time
if dt != zero_dt {
variables["dt"] = dt
}
var zero_tz string
if tz != zero_tz {
variables["tz"] = tz
"query": query,
"dt": dt,
"tz": tz,
"tzNoOmitEmpty": tzNoOmitEmpty,
}
var retval OmitEmptyQueryResponse
@@ -65,11 +53,12 @@ func OmitEmptyQuery(
nil,
"OmitEmptyQuery",
`
query OmitEmptyQuery ($query: UserQueryInput, $dt: DateTime, $tz: String) {
query OmitEmptyQuery ($query: UserQueryInput, $dt: DateTime, $tz: String, $tzNoOmitEmpty: String) {
user(query: $query) {
id
}
maybeConvert(dt: $dt, tz: $tz)
convert2: maybeConvert(dt: $dt, tz: $tzNoOmitEmpty)
}
`,
&retval,
+1 -1
View File
@@ -2,7 +2,7 @@
"operations": [
{
"operationName": "OmitEmptyQuery",
"query": "\nquery OmitEmptyQuery ($query: UserQueryInput, $dt: DateTime, $tz: String) {\n\tuser(query: $query) {\n\t\tid\n\t}\n\tmaybeConvert(dt: $dt, tz: $tz)\n}\n",
"query": "\nquery OmitEmptyQuery ($query: UserQueryInput, $dt: DateTime, $tz: String, $tzNoOmitEmpty: String) {\n\tuser(query: $query) {\n\t\tid\n\t}\n\tmaybeConvert(dt: $dt, tz: $tz)\n\tconvert2: maybeConvert(dt: $dt, tz: $tzNoOmitEmpty)\n}\n",
"sourceLocation": "testdata/queries/Omitempty.graphql"
}
]
+20
View File
@@ -0,0 +1,20 @@
# @genqlient(pointer: true)
query PointersQuery(
$query: UserQueryInput,
# @genqlient(pointer: false)
$dt: DateTime,
$tz: String,
) {
user(query: $query) {
id
roles
name
emails
# @genqlient(pointer: false)
emailsNoPtr: emails
}
otherUser: user(query: $query) {
id
}
maybeConvert(dt: $dt, tz: $tz)
}
+80
View File
@@ -0,0 +1,80 @@
package test
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
import (
"time"
"github.com/Khan/genqlient/graphql"
"github.com/me/mypkg"
)
type PointersQueryOtherUser struct {
Id *mypkg.ID `json:"id"`
}
type PointersQueryResponse struct {
User *PointersQueryUser `json:"user"`
OtherUser *PointersQueryOtherUser `json:"otherUser"`
MaybeConvert *time.Time `json:"maybeConvert"`
}
type PointersQueryUser struct {
Id *mypkg.ID `json:"id"`
Roles []*Role `json:"roles"`
Name *string `json:"name"`
Emails []*string `json:"emails"`
EmailsNoPtr []string `json:"emailsNoPtr"`
}
type Role string
const (
RoleStudent Role = "STUDENT"
RoleTeacher Role = "TEACHER"
)
type UserQueryInput struct {
Email *string `json:"email"`
Name *string `json:"name"`
Id *mypkg.ID `json:"id"`
Role *Role `json:"role"`
Names []*string `json:"names"`
}
func PointersQuery(
client graphql.Client,
query UserQueryInput,
dt time.Time,
tz string,
) (*PointersQueryResponse, error) {
variables := map[string]interface{}{
"query": query,
"dt": dt,
"tz": tz,
}
var retval PointersQueryResponse
err := client.MakeRequest(
nil,
"PointersQuery",
`
query PointersQuery ($query: UserQueryInput, $dt: DateTime, $tz: String) {
user(query: $query) {
id
roles
name
emails
emailsNoPtr: emails
}
otherUser: user(query: $query) {
id
}
maybeConvert(dt: $dt, tz: $tz)
}
`,
&retval,
variables,
)
return &retval, err
}
+9
View File
@@ -0,0 +1,9 @@
{
"operations": [
{
"operationName": "PointersQuery",
"query": "\nquery PointersQuery ($query: UserQueryInput, $dt: DateTime, $tz: String) {\n\tuser(query: $query) {\n\t\tid\n\t\troles\n\t\tname\n\t\temails\n\t\temailsNoPtr: emails\n\t}\n\totherUser: user(query: $query) {\n\t\tid\n\t}\n\tmaybeConvert(dt: $dt, tz: $tz)\n}\n",
"sourceLocation": "testdata/queries/Pointers.graphql"
}
]
}
+24
View File
@@ -0,0 +1,24 @@
query PointersQuery(
# @genqlient(pointer: true)
$query: UserQueryInput,
# @genqlient(pointer: true)
$dt: DateTime,
$tz: String,
) {
# @genqlient(pointer: true)
user(query: $query) {
id
roles
# @genqlient(pointer: true)
name
# @genqlient(pointer: true)
emails
# @genqlient(pointer: true)
emailsNoPtr: emails
}
# @genqlient(pointer: true)
otherUser: user(query: $query) {
id
}
maybeConvert(dt: $dt, tz: $tz)
}
+80
View File
@@ -0,0 +1,80 @@
package test
// Code generated by github.com/Khan/genqlient, DO NOT EDIT.
import (
"time"
"github.com/Khan/genqlient/graphql"
"github.com/me/mypkg"
)
type PointersQueryOtherUser struct {
Id mypkg.ID `json:"id"`
}
type PointersQueryResponse struct {
User *PointersQueryUser `json:"user"`
OtherUser *PointersQueryOtherUser `json:"otherUser"`
MaybeConvert time.Time `json:"maybeConvert"`
}
type PointersQueryUser struct {
Id mypkg.ID `json:"id"`
Roles []Role `json:"roles"`
Name *string `json:"name"`
Emails []*string `json:"emails"`
EmailsNoPtr []*string `json:"emailsNoPtr"`
}
type Role string
const (
RoleStudent Role = "STUDENT"
RoleTeacher Role = "TEACHER"
)
type UserQueryInput struct {
Email string `json:"email"`
Name string `json:"name"`
Id mypkg.ID `json:"id"`
Role Role `json:"role"`
Names []string `json:"names"`
}
func PointersQuery(
client graphql.Client,
query *UserQueryInput,
dt *time.Time,
tz string,
) (*PointersQueryResponse, error) {
variables := map[string]interface{}{
"query": query,
"dt": dt,
"tz": tz,
}
var retval PointersQueryResponse
err := client.MakeRequest(
nil,
"PointersQuery",
`
query PointersQuery ($query: UserQueryInput, $dt: DateTime, $tz: String) {
user(query: $query) {
id
roles
name
emails
emailsNoPtr: emails
}
otherUser: user(query: $query) {
id
}
maybeConvert(dt: $dt, tz: $tz)
}
`,
&retval,
variables,
)
return &retval, err
}
+9
View File
@@ -0,0 +1,9 @@
{
"operations": [
{
"operationName": "PointersQuery",
"query": "\nquery PointersQuery ($query: UserQueryInput, $dt: DateTime, $tz: String) {\n\tuser(query: $query) {\n\t\tid\n\t\troles\n\t\tname\n\t\temails\n\t\temailsNoPtr: emails\n\t}\n\totherUser: user(query: $query) {\n\t\tid\n\t}\n\tmaybeConvert(dt: $dt, tz: $tz)\n}\n",
"sourceLocation": "testdata/queries/PointersInline.graphql"
}
]
}