iris/_examples/graphql/schema-first/graph/schema.resolvers.go
Gerasimos (Makis) Maropoulos e9eb85af90
add graphql example
#2029
2023-02-07 03:01:24 +02:00

78 lines
2.0 KiB
Go

package graph
// This file will be automatically regenerated based on the schema, any resolver implementations
// will be copied through when generating and any unknown code will be moved to the end.
import (
"context"
"fmt"
"strconv"
"github.com/iris-contrib/outerbanks-api/graph/model"
)
func (r *mutationResolver) UpsertCharacter(ctx context.Context, input model.CharacterInput) (*model.Character, error) {
id := input.ID
var character model.Character
character.Name = input.Name
character.CliqueType = input.CliqueType
n := len(r.Resolver.CharacterStore)
if n == 0 {
r.Resolver.CharacterStore = make(map[string]model.Character)
}
if id != nil {
cs, ok := r.Resolver.CharacterStore[*id]
if !ok {
return nil, fmt.Errorf("not found")
}
if input.IsHero != nil {
character.IsHero = *input.IsHero
} else {
character.IsHero = cs.IsHero
}
r.Resolver.CharacterStore[*id] = character
} else {
// generate unique id
nid := strconv.Itoa(n + 1)
character.ID = nid
if input.IsHero != nil {
character.IsHero = *input.IsHero
}
r.Resolver.CharacterStore[nid] = character
}
return &character, nil
}
func (r *queryResolver) Character(ctx context.Context, id string) (*model.Character, error) {
character, ok := r.Resolver.CharacterStore[id]
if !ok {
return nil, fmt.Errorf("not found")
}
return &character, nil
}
func (r *queryResolver) Characters(ctx context.Context, cliqueType model.CliqueType) ([]*model.Character, error) {
characters := make([]*model.Character, 0)
for idx := range r.Resolver.CharacterStore {
character := r.Resolver.CharacterStore[idx]
if character.CliqueType == cliqueType {
characters = append(characters, &character)
}
}
return characters, nil
}
// Mutation returns generated.MutationResolver implementation.
func (r *Resolver) Mutation() MutationResolver { return &mutationResolver{r} }
// Query returns generated.QueryResolver implementation.
func (r *Resolver) Query() QueryResolver { return &queryResolver{r} }
type mutationResolver struct{ *Resolver }
type queryResolver struct{ *Resolver }