github.com/HaswinVidanage/gqlgen@v0.8.1-0.20220609041233-69528c1bf712/example/scalars/resolvers.go (about) 1 //go:generate go run ../../testdata/gqlgen.go 2 3 package scalars 4 5 import ( 6 context "context" 7 "fmt" 8 time "time" 9 10 "github.com/HaswinVidanage/gqlgen/example/scalars/external" 11 "github.com/HaswinVidanage/gqlgen/example/scalars/model" 12 ) 13 14 type Resolver struct { 15 } 16 17 func (r *Resolver) Query() QueryResolver { 18 return &queryResolver{r} 19 } 20 21 func (r *Resolver) User() UserResolver { 22 return &userResolver{r} 23 } 24 25 type queryResolver struct{ *Resolver } 26 27 func (r *queryResolver) User(ctx context.Context, id external.ObjectID) (*model.User, error) { 28 return &model.User{ 29 ID: id, 30 Name: fmt.Sprintf("Test User %d", id), 31 Created: time.Now(), 32 Address: model.Address{ID: 1, Location: &model.Point{X: 1, Y: 2}}, 33 Tier: model.TierC, 34 }, nil 35 } 36 37 func (r *queryResolver) Search(ctx context.Context, input *model.SearchArgs) ([]model.User, error) { 38 location := model.Point{X: 1, Y: 2} 39 if input.Location != nil { 40 location = *input.Location 41 } 42 43 created := time.Now() 44 if input.CreatedAfter != nil { 45 created = *input.CreatedAfter 46 } 47 48 return []model.User{ 49 { 50 ID: 1, 51 Name: "Test User 1", 52 Created: created, 53 Address: model.Address{ID: 2, Location: &location}, 54 Tier: model.TierA, 55 }, 56 { 57 ID: 2, 58 Name: "Test User 2", 59 Created: created, 60 Address: model.Address{ID: 1, Location: &location}, 61 Tier: model.TierC, 62 }, 63 }, nil 64 } 65 66 type userResolver struct{ *Resolver } 67 68 func (r *userResolver) PrimitiveResolver(ctx context.Context, obj *model.User) (string, error) { 69 return "test", nil 70 } 71 72 func (r *userResolver) CustomResolver(ctx context.Context, obj *model.User) (*model.Point, error) { 73 return &model.Point{X: 5, Y: 1}, nil 74 }