From 34e890073834dadfdb446ef18277eef00e1b2688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorben=20G=C3=BCnther?= Date: Tue, 9 Nov 2021 00:19:04 +0100 Subject: [PATCH] Move getTeams from mutation to query --- graph/generated/generated.go | 114 +++++++++++++++++++---------------- graph/schema.graphqls | 2 +- graph/schema.resolvers.go | 70 ++++++++++----------- 3 files changed, 98 insertions(+), 88 deletions(-) diff --git a/graph/generated/generated.go b/graph/generated/generated.go index c48a455..a27aa87 100644 --- a/graph/generated/generated.go +++ b/graph/generated/generated.go @@ -8,6 +8,7 @@ import ( "errors" "strconv" "sync" + "sync/atomic" "git.xenrox.net/~xenrox/10man-api/graph/model" "github.com/99designs/gqlgen/graphql" @@ -49,12 +50,12 @@ type ComplexityRoot struct { CreateUser func(childComplexity int, input model.NewUser) int DeleteUser func(childComplexity int, id int) int FinishMatch func(childComplexity int, winner string) int - GetTeams func(childComplexity int, id *int) int StartQueue func(childComplexity int, teamspeakID string) int UpdateUser func(childComplexity int, id int, input model.UserInput) int } Query struct { + GetTeams func(childComplexity int, id *int) int UserBySteam func(childComplexity int, steamID string) int UserByTs func(childComplexity int, teamspeakID string) int } @@ -84,11 +85,11 @@ type MutationResolver interface { CreateMatch(ctx context.Context) (int, error) CancelMatch(ctx context.Context) (string, error) FinishMatch(ctx context.Context, winner string) (string, error) - GetTeams(ctx context.Context, id *int) (*model.Teams, error) } type QueryResolver interface { UserBySteam(ctx context.Context, steamID string) (*model.User, error) UserByTs(ctx context.Context, teamspeakID string) (*model.User, error) + GetTeams(ctx context.Context, id *int) (*model.Teams, error) } type executableSchema struct { @@ -168,18 +169,6 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.FinishMatch(childComplexity, args["winner"].(string)), true - case "Mutation.getTeams": - if e.complexity.Mutation.GetTeams == nil { - break - } - - args, err := ec.field_Mutation_getTeams_args(context.TODO(), rawArgs) - if err != nil { - return 0, false - } - - return e.complexity.Mutation.GetTeams(childComplexity, args["id"].(*int)), true - case "Mutation.startQueue": if e.complexity.Mutation.StartQueue == nil { break @@ -204,6 +193,18 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.UpdateUser(childComplexity, args["id"].(int), args["input"].(model.UserInput)), true + case "Query.getTeams": + if e.complexity.Query.GetTeams == nil { + break + } + + args, err := ec.field_Query_getTeams_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.Query.GetTeams(childComplexity, args["id"].(*int)), true + case "Query.userBySteam": if e.complexity.Query.UserBySteam == nil { break @@ -373,6 +374,7 @@ type Teams { type Query { userBySteam(steamID: String!): User userByTS(teamspeakID: String!): User + getTeams(id: Int): Teams! } input NewUser { @@ -398,7 +400,6 @@ type Mutation { createMatch: Int! cancelMatch: String! finishMatch(winner: String!): String! - getTeams(id: Int): Teams! } `, BuiltIn: false}, } @@ -468,21 +469,6 @@ func (ec *executionContext) field_Mutation_finishMatch_args(ctx context.Context, return args, nil } -func (ec *executionContext) field_Mutation_getTeams_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { - var err error - args := map[string]interface{}{} - var arg0 *int - if tmp, ok := rawArgs["id"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) - arg0, err = ec.unmarshalOInt2ᚖint(ctx, tmp) - if err != nil { - return nil, err - } - } - args["id"] = arg0 - return args, nil -} - func (ec *executionContext) field_Mutation_startQueue_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} @@ -537,6 +523,21 @@ func (ec *executionContext) field_Query___type_args(ctx context.Context, rawArgs return args, nil } +func (ec *executionContext) field_Query_getTeams_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 *int + if tmp, ok := rawArgs["id"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) + arg0, err = ec.unmarshalOInt2ᚖint(ctx, tmp) + if err != nil { + return nil, err + } + } + args["id"] = arg0 + return args, nil +} + func (ec *executionContext) field_Query_userBySteam_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} @@ -924,7 +925,7 @@ func (ec *executionContext) _Mutation_finishMatch(ctx context.Context, field gra return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) _Mutation_getTeams(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { +func (ec *executionContext) _Query_userBySteam(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) @@ -932,7 +933,7 @@ func (ec *executionContext) _Mutation_getTeams(ctx context.Context, field graphq } }() fc := &graphql.FieldContext{ - Object: "Mutation", + Object: "Query", Field: field, Args: nil, IsMethod: true, @@ -941,7 +942,7 @@ func (ec *executionContext) _Mutation_getTeams(ctx context.Context, field graphq ctx = graphql.WithFieldContext(ctx, fc) rawArgs := field.ArgumentMap(ec.Variables) - args, err := ec.field_Mutation_getTeams_args(ctx, rawArgs) + args, err := ec.field_Query_userBySteam_args(ctx, rawArgs) if err != nil { ec.Error(ctx, err) return graphql.Null @@ -949,24 +950,21 @@ func (ec *executionContext) _Mutation_getTeams(ctx context.Context, field graphq fc.Args = args resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Mutation().GetTeams(rctx, args["id"].(*int)) + return ec.resolvers.Query().UserBySteam(rctx, args["steamID"].(string)) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(*model.Teams) + res := resTmp.(*model.User) fc.Result = res - return ec.marshalNTeams2ᚖgitᚗxenroxᚗnetᚋאxenroxᚋ10manᚑapiᚋgraphᚋmodelᚐTeams(ctx, field.Selections, res) + return ec.marshalOUser2ᚖgitᚗxenroxᚗnetᚋאxenroxᚋ10manᚑapiᚋgraphᚋmodelᚐUser(ctx, field.Selections, res) } -func (ec *executionContext) _Query_userBySteam(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { +func (ec *executionContext) _Query_userByTS(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) @@ -983,7 +981,7 @@ func (ec *executionContext) _Query_userBySteam(ctx context.Context, field graphq ctx = graphql.WithFieldContext(ctx, fc) rawArgs := field.ArgumentMap(ec.Variables) - args, err := ec.field_Query_userBySteam_args(ctx, rawArgs) + args, err := ec.field_Query_userByTS_args(ctx, rawArgs) if err != nil { ec.Error(ctx, err) return graphql.Null @@ -991,7 +989,7 @@ func (ec *executionContext) _Query_userBySteam(ctx context.Context, field graphq fc.Args = args resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().UserBySteam(rctx, args["steamID"].(string)) + return ec.resolvers.Query().UserByTs(rctx, args["teamspeakID"].(string)) }) if err != nil { ec.Error(ctx, err) @@ -1005,7 +1003,7 @@ func (ec *executionContext) _Query_userBySteam(ctx context.Context, field graphq return ec.marshalOUser2ᚖgitᚗxenroxᚗnetᚋאxenroxᚋ10manᚑapiᚋgraphᚋmodelᚐUser(ctx, field.Selections, res) } -func (ec *executionContext) _Query_userByTS(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { +func (ec *executionContext) _Query_getTeams(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) @@ -1022,7 +1020,7 @@ func (ec *executionContext) _Query_userByTS(ctx context.Context, field graphql.C ctx = graphql.WithFieldContext(ctx, fc) rawArgs := field.ArgumentMap(ec.Variables) - args, err := ec.field_Query_userByTS_args(ctx, rawArgs) + args, err := ec.field_Query_getTeams_args(ctx, rawArgs) if err != nil { ec.Error(ctx, err) return graphql.Null @@ -1030,18 +1028,21 @@ func (ec *executionContext) _Query_userByTS(ctx context.Context, field graphql.C fc.Args = args resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().UserByTs(rctx, args["teamspeakID"].(string)) + return ec.resolvers.Query().GetTeams(rctx, args["id"].(*int)) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*model.User) + res := resTmp.(*model.Teams) fc.Result = res - return ec.marshalOUser2ᚖgitᚗxenroxᚗnetᚋאxenroxᚋ10manᚑapiᚋgraphᚋmodelᚐUser(ctx, field.Selections, res) + return ec.marshalNTeams2ᚖgitᚗxenroxᚗnetᚋאxenroxᚋ10manᚑapiᚋgraphᚋmodelᚐTeams(ctx, field.Selections, res) } func (ec *executionContext) _Query___type(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { @@ -2700,11 +2701,6 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) if out.Values[i] == graphql.Null { invalids++ } - case "getTeams": - out.Values[i] = ec._Mutation_getTeams(ctx, field) - if out.Values[i] == graphql.Null { - invalids++ - } default: panic("unknown field " + strconv.Quote(field.Name)) } @@ -2753,6 +2749,20 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr res = ec._Query_userByTS(ctx, field) return res }) + case "getTeams": + field := field + out.Concurrently(i, func() (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_getTeams(ctx, field) + if res == graphql.Null { + atomic.AddUint32(&invalids, 1) + } + return res + }) case "__type": out.Values[i] = ec._Query___type(ctx, field) case "__schema": diff --git a/graph/schema.graphqls b/graph/schema.graphqls index 78ee2eb..82d61e5 100644 --- a/graph/schema.graphqls +++ b/graph/schema.graphqls @@ -16,6 +16,7 @@ type Teams { type Query { userBySteam(steamID: String!): User userByTS(teamspeakID: String!): User + getTeams(id: Int): Teams! } input NewUser { @@ -41,5 +42,4 @@ type Mutation { createMatch: Int! cancelMatch: String! finishMatch(winner: String!): String! - getTeams(id: Int): Teams! } diff --git a/graph/schema.resolvers.go b/graph/schema.resolvers.go index d59258f..56c9326 100644 --- a/graph/schema.resolvers.go +++ b/graph/schema.resolvers.go @@ -388,7 +388,41 @@ func (r *mutationResolver) FinishMatch(ctx context.Context, winner string) (stri return "FinishSuccess", nil } -func (r *mutationResolver) GetTeams(ctx context.Context, id *int) (*model.Teams, error) { +func (r *queryResolver) UserBySteam(ctx context.Context, steamID string) (*model.User, error) { + var user model.User + user.SteamID = steamID + + query := ` + SELECT id, teamspeak_id, Elo, admin, avatar, name + FROM "User" + WHERE steam_id = $1` + err := database.DB.QueryRow(query, steamID).Scan(&user.ID, + &user.TeamspeakID, &user.Elo, &user.Admin, &user.Avatar, &user.Name) + if err != nil { + return nil, database.CheckErrorCode(err) + } + + return &user, nil +} + +func (r *queryResolver) UserByTs(ctx context.Context, teamspeakID string) (*model.User, error) { + var user model.User + user.TeamspeakID = teamspeakID + + query := ` + SELECT id, steam_id, Elo, admin, avatar, name + FROM "User" + WHERE teamspeak_id = $1` + err := database.DB.QueryRow(query, teamspeakID).Scan(&user.ID, + &user.SteamID, &user.Elo, &user.Admin, &user.Avatar, &user.Name) + if err != nil { + return nil, database.CheckErrorCode(err) + } + + return &user, nil +} + +func (r *queryResolver) GetTeams(ctx context.Context, id *int) (*model.Teams, error) { var teams model.Teams var team1, team2 []*model.User var err error @@ -468,40 +502,6 @@ func (r *mutationResolver) GetTeams(ctx context.Context, id *int) (*model.Teams, return &teams, nil } -func (r *queryResolver) UserBySteam(ctx context.Context, steamID string) (*model.User, error) { - var user model.User - user.SteamID = steamID - - query := ` - SELECT id, teamspeak_id, Elo, admin, avatar, name - FROM "User" - WHERE steam_id = $1` - err := database.DB.QueryRow(query, steamID).Scan(&user.ID, - &user.TeamspeakID, &user.Elo, &user.Admin, &user.Avatar, &user.Name) - if err != nil { - return nil, database.CheckErrorCode(err) - } - - return &user, nil -} - -func (r *queryResolver) UserByTs(ctx context.Context, teamspeakID string) (*model.User, error) { - var user model.User - user.TeamspeakID = teamspeakID - - query := ` - SELECT id, steam_id, Elo, admin, avatar, name - FROM "User" - WHERE teamspeak_id = $1` - err := database.DB.QueryRow(query, teamspeakID).Scan(&user.ID, - &user.SteamID, &user.Elo, &user.Admin, &user.Avatar, &user.Name) - if err != nil { - return nil, database.CheckErrorCode(err) - } - - return &user, nil -} - // Mutation returns generated.MutationResolver implementation. func (r *Resolver) Mutation() generated.MutationResolver { return &mutationResolver{r} } -- 2.44.0