mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 18:51:03 +01:00
78 lines
2.0 KiB
Go
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 }
|