GraphQL API and utilities for the rpdata project
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package queries
import ( "context" "errors"
"git.aiterp.net/rpdata/api/graphql/loader" "git.aiterp.net/rpdata/api/graphql/resolver/types" "git.aiterp.net/rpdata/api/model/character" )
// CharactersArgs is args for characters query
type CharactersArgs struct { IDs *[]string Nicks *[]string Author *string }
// Characters resolves the characters query
func (r *QueryResolver) Characters(ctx context.Context, args *CharactersArgs) ([]*types.CharacterResolver, error) { var chars []character.Character var err error
loader := loader.FromContext(ctx) if loader == nil { return nil, errors.New("no loader") }
switch { case args.IDs != nil: chars, err = character.ListIDs(*args.IDs...) case args.Nicks != nil: chars, err = character.ListNicks(*args.Nicks...) case args.Author != nil: chars, err = character.ListAuthor(*args.Author) default: chars, err = character.List() }
if err != nil { return nil, err }
resolvers := make([]*types.CharacterResolver, 0, len(chars)) for i := range chars { if chars[i].ID == "" { continue }
resolvers = append(resolvers, &types.CharacterResolver{C: chars[i]}) }
return resolvers, nil }
|