github.com/maeglindeveloper/gqlgen@v0.13.1-0.20210413081235-57808b12a0a0/example/type-system-extension/resolver.go (about) 1 //go:generate go run ../../testdata/gqlgen.go 2 3 package type_system_extension 4 5 import ( 6 "context" 7 "fmt" 8 ) 9 10 func NewRootResolver() ResolverRoot { 11 return &resolver{ 12 todos: []*Todo{ 13 { 14 ID: "Todo:1", 15 Text: "Buy a cat food", 16 State: StateNotYet, 17 Verified: false, 18 }, 19 { 20 ID: "Todo:2", 21 Text: "Check cat water", 22 State: StateDone, 23 Verified: true, 24 }, 25 { 26 ID: "Todo:3", 27 Text: "Check cat meal", 28 State: StateDone, 29 Verified: true, 30 }, 31 }, 32 } 33 } 34 35 type resolver struct { 36 todos []*Todo 37 } 38 39 func (r *resolver) MyQuery() MyQueryResolver { 40 return &queryResolver{r} 41 } 42 43 func (r *resolver) MyMutation() MyMutationResolver { 44 return &mutationResolver{r} 45 } 46 47 type queryResolver struct{ *resolver } 48 49 func (r *queryResolver) Todos(ctx context.Context) ([]*Todo, error) { 50 return r.todos, nil 51 } 52 53 func (r *queryResolver) Todo(ctx context.Context, id string) (*Todo, error) { 54 for _, todo := range r.todos { 55 if todo.ID == id { 56 return todo, nil 57 } 58 } 59 return nil, nil 60 } 61 62 type mutationResolver struct{ *resolver } 63 64 func (r *mutationResolver) CreateTodo(ctx context.Context, todoInput TodoInput) (*Todo, error) { 65 newID := fmt.Sprintf("Todo:%d", len(r.todos)+1) 66 newTodo := &Todo{ 67 ID: newID, 68 Text: todoInput.Text, 69 State: StateNotYet, 70 } 71 r.todos = append(r.todos, newTodo) 72 73 return newTodo, nil 74 }