diff --git a/graphql/resolvers/ennoblement.go b/graphql/resolvers/ennoblement.go index 543ac20..4ed5d66 100644 --- a/graphql/resolvers/ennoblement.go +++ b/graphql/resolvers/ennoblement.go @@ -13,9 +13,7 @@ func (r *ennoblementResolver) NewOwner(ctx context.Context, obj *models.Ennoblem return obj.NewOwner, nil } - rctx := graphql.GetFieldContext(ctx) - server, ok := rctx.Parent.Parent.Args["server"].(string) - if ok { + if server, ok := getServer(graphql.GetFieldContext(ctx)); ok { dataloaders := middleware.DataLoadersFromContext(ctx) if dataloaders != nil { if dataloader, ok := dataloaders[server]; ok { @@ -35,9 +33,7 @@ func (r *ennoblementResolver) OldOwner(ctx context.Context, obj *models.Ennoblem return obj.OldOwner, nil } - rctx := graphql.GetFieldContext(ctx) - server, ok := rctx.Parent.Parent.Args["server"].(string) - if ok { + if server, ok := getServer(graphql.GetFieldContext(ctx)); ok { dataloaders := middleware.DataLoadersFromContext(ctx) if dataloaders != nil { if dataloader, ok := dataloaders[server]; ok { @@ -57,9 +53,7 @@ func (r *ennoblementResolver) Village(ctx context.Context, obj *models.Ennobleme return obj.Village, nil } - rctx := graphql.GetFieldContext(ctx) - server, ok := rctx.Parent.Parent.Args["server"].(string) - if ok { + if server, ok := getServer(graphql.GetFieldContext(ctx)); ok { dataloaders := middleware.DataLoadersFromContext(ctx) if dataloaders != nil { if dataloader, ok := dataloaders[server]; ok { diff --git a/graphql/resolvers/helpers.go b/graphql/resolvers/helpers.go new file mode 100644 index 0000000..c8619d3 --- /dev/null +++ b/graphql/resolvers/helpers.go @@ -0,0 +1,17 @@ +package resolvers + +import "github.com/99designs/gqlgen/graphql" + +func getServer(rctx *graphql.FieldContext) (string, bool) { + server := "" + ok := false + parent := rctx.Parent + for parent != nil { + server, ok = parent.Args["server"].(string) + if ok { + break + } + parent = parent.Parent + } + return server, ok +} diff --git a/graphql/resolvers/player.go b/graphql/resolvers/player.go index e76ff87..2d67297 100644 --- a/graphql/resolvers/player.go +++ b/graphql/resolvers/player.go @@ -14,9 +14,7 @@ func (r *playerResolver) Tribe(ctx context.Context, obj *models.Player) (*models return obj.Tribe, nil } - rctx := graphql.GetFieldContext(ctx) - server, ok := rctx.Parent.Parent.Parent.Args["server"].(string) - if ok { + if server, ok := getServer(graphql.GetFieldContext(ctx)); ok { dataloaders := middleware.DataLoadersFromContext(ctx) if dataloaders != nil { if dataloader, ok := dataloaders[server]; ok { diff --git a/graphql/resolvers/village.go b/graphql/resolvers/village.go index 5d09484..5e88661 100644 --- a/graphql/resolvers/village.go +++ b/graphql/resolvers/village.go @@ -14,9 +14,7 @@ func (r *villageResolver) Player(ctx context.Context, obj *models.Village) (*mod return obj.Player, nil } - rctx := graphql.GetFieldContext(ctx) - server, ok := rctx.Parent.Parent.Parent.Args["server"].(string) - if ok { + if server, ok := getServer(graphql.GetFieldContext(ctx)); ok { dataloaders := middleware.DataLoadersFromContext(ctx) if dataloaders != nil { if dataloader, ok := dataloaders[server]; ok { diff --git a/utils/sanitize_sort.go b/utils/sanitize_sort.go index 8e64456..979cb25 100644 --- a/utils/sanitize_sort.go +++ b/utils/sanitize_sort.go @@ -6,7 +6,7 @@ func SanitizeSort(sort string) string { trimmed := strings.TrimSpace(sort) splitted := strings.Split(trimmed, " ") length := len(splitted) - if length < 1 { + if length != 2 { return "" } keyword := "ASC"