~xenrox/10man-api

8da2d4287716c5929d39dc68d99dbaea4ca3384d — Thorben Günther 8 months ago 6a7e623
Run go generate ./...
3 files changed, 304 insertions(+), 239 deletions(-)

M graph/generated/generated.go
M graph/model/models_gen.go
M graph/schema.resolvers.go
M graph/generated/generated.go => graph/generated/generated.go +296 -232
@@ 113,7 113,7 @@ func (e *executableSchema) Schema() *ast.Schema {
}

func (e *executableSchema) Complexity(typeName, field string, childComplexity int, rawArgs map[string]interface{}) (int, bool) {
	ec := executionContext{nil, e}
	ec := executionContext{nil, e, 0, 0, nil}
	_ = ec
	switch typeName + "." + field {



@@ 348,7 348,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in

func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler {
	rc := graphql.GetOperationContext(ctx)
	ec := executionContext{rc, e}
	ec := executionContext{rc, e, 0, 0, make(chan graphql.DeferredResult)}
	inputUnmarshalMap := graphql.BuildUnmarshalerMap(
		ec.unmarshalInputNewUser,
		ec.unmarshalInputUserInput,


@@ 358,18 358,33 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler {
	switch rc.Operation.Operation {
	case ast.Query:
		return func(ctx context.Context) *graphql.Response {
			if !first {
				return nil
			var response graphql.Response
			var data graphql.Marshaler
			if first {
				first = false
				ctx = graphql.WithUnmarshalerMap(ctx, inputUnmarshalMap)
				data = ec._Query(ctx, rc.Operation.SelectionSet)
			} else {
				if atomic.LoadInt32(&ec.pendingDeferred) > 0 {
					result := <-ec.deferredResults
					atomic.AddInt32(&ec.pendingDeferred, -1)
					data = result.Result
					response.Path = result.Path
					response.Label = result.Label
					response.Errors = result.Errors
				} else {
					return nil
				}
			}
			first = false
			ctx = graphql.WithUnmarshalerMap(ctx, inputUnmarshalMap)
			data := ec._Query(ctx, rc.Operation.SelectionSet)
			var buf bytes.Buffer
			data.MarshalGQL(&buf)

			return &graphql.Response{
				Data: buf.Bytes(),
			response.Data = buf.Bytes()
			if atomic.LoadInt32(&ec.deferred) > 0 {
				hasNext := atomic.LoadInt32(&ec.pendingDeferred) > 0
				response.HasNext = &hasNext
			}

			return &response
		}
	case ast.Mutation:
		return func(ctx context.Context) *graphql.Response {


@@ 395,6 410,28 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler {
type executionContext struct {
	*graphql.OperationContext
	*executableSchema
	deferred        int32
	pendingDeferred int32
	deferredResults chan graphql.DeferredResult
}

func (ec *executionContext) processDeferredGroup(dg graphql.DeferredGroup) {
	atomic.AddInt32(&ec.pendingDeferred, 1)
	go func() {
		ctx := graphql.WithFreshResponseContext(dg.Context)
		dg.FieldSet.Dispatch(ctx)
		ds := graphql.DeferredResult{
			Path:   dg.Path,
			Label:  dg.Label,
			Result: dg.FieldSet,
			Errors: graphql.GetErrors(ctx),
		}
		// null fields should bubble up
		if dg.FieldSet.Invalids > 0 {
			ds.Result = graphql.Null
		}
		ec.deferredResults <- ds
	}()
}

func (ec *executionContext) introspectSchema() (*introspection.Schema, error) {


@@ 823,7 860,7 @@ func (ec *executionContext) fieldContext_Mutation_createUser(ctx context.Context
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Mutation_createUser_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 878,7 915,7 @@ func (ec *executionContext) fieldContext_Mutation_deleteUser(ctx context.Context
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Mutation_deleteUser_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 946,7 983,7 @@ func (ec *executionContext) fieldContext_Mutation_updateUser(ctx context.Context
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Mutation_updateUser_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 1001,7 1038,7 @@ func (ec *executionContext) fieldContext_Mutation_startQueue(ctx context.Context
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Mutation_startQueue_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 1056,7 1093,7 @@ func (ec *executionContext) fieldContext_Mutation_cancelQueue(ctx context.Contex
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Mutation_cancelQueue_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 1199,7 1236,7 @@ func (ec *executionContext) fieldContext_Mutation_finishMatch(ctx context.Contex
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Mutation_finishMatch_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 1260,7 1297,7 @@ func (ec *executionContext) fieldContext_Mutation_vetoMap(ctx context.Context, f
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Mutation_vetoMap_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 1328,7 1365,7 @@ func (ec *executionContext) fieldContext_Query_userBySteam(ctx context.Context, 
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Query_userBySteam_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 1396,7 1433,7 @@ func (ec *executionContext) fieldContext_Query_userByTS(ctx context.Context, fie
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Query_userByTS_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 1461,7 1498,7 @@ func (ec *executionContext) fieldContext_Query_getTeams(ctx context.Context, fie
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Query_getTeams_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 1535,7 1572,7 @@ func (ec *executionContext) fieldContext_Query___type(ctx context.Context, field
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field_Query___type_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 3558,7 3595,7 @@ func (ec *executionContext) fieldContext___Type_fields(ctx context.Context, fiel
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field___Type_fields_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 3746,7 3783,7 @@ func (ec *executionContext) fieldContext___Type_enumValues(ctx context.Context, 
	ctx = graphql.WithFieldContext(ctx, fc)
	if fc.Args, err = ec.field___Type_enumValues_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
		ec.Error(ctx, err)
		return
		return fc, err
	}
	return fc, nil
}


@@ 3928,26 3965,29 @@ func (ec *executionContext) unmarshalInputNewUser(ctx context.Context, obj inter
			var err error

			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("steamID"))
			it.SteamID, err = ec.unmarshalNString2string(ctx, v)
			data, err := ec.unmarshalNString2string(ctx, v)
			if err != nil {
				return it, err
			}
			it.SteamID = data
		case "teamspeakID":
			var err error

			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("teamspeakID"))
			it.TeamspeakID, err = ec.unmarshalNString2string(ctx, v)
			data, err := ec.unmarshalNString2string(ctx, v)
			if err != nil {
				return it, err
			}
			it.TeamspeakID = data
		case "avatar":
			var err error

			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("avatar"))
			it.Avatar, err = ec.unmarshalOString2ᚖstring(ctx, v)
			data, err := ec.unmarshalOString2ᚖstring(ctx, v)
			if err != nil {
				return it, err
			}
			it.Avatar = data
		}
	}



@@ 3972,34 4012,38 @@ func (ec *executionContext) unmarshalInputUserInput(ctx context.Context, obj int
			var err error

			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("elo"))
			it.Elo, err = ec.unmarshalOInt2ᚖint(ctx, v)
			data, err := ec.unmarshalOInt2ᚖint(ctx, v)
			if err != nil {
				return it, err
			}
			it.Elo = data
		case "teamspeakID":
			var err error

			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("teamspeakID"))
			it.TeamspeakID, err = ec.unmarshalOString2ᚖstring(ctx, v)
			data, err := ec.unmarshalOString2ᚖstring(ctx, v)
			if err != nil {
				return it, err
			}
			it.TeamspeakID = data
		case "avatar":
			var err error

			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("avatar"))
			it.Avatar, err = ec.unmarshalOString2ᚖstring(ctx, v)
			data, err := ec.unmarshalOString2ᚖstring(ctx, v)
			if err != nil {
				return it, err
			}
			it.Avatar = data
		case "name":
			var err error

			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("name"))
			it.Name, err = ec.unmarshalOString2ᚖstring(ctx, v)
			data, err := ec.unmarshalOString2ᚖstring(ctx, v)
			if err != nil {
				return it, err
			}
			it.Name = data
		}
	}



@@ 4018,34 4062,43 @@ var mapVoteImplementors = []string{"MapVote"}

func (ec *executionContext) _MapVote(ctx context.Context, sel ast.SelectionSet, obj *model.MapVote) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, mapVoteImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("MapVote")
		case "maps":

			out.Values[i] = ec._MapVote_maps(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "status":

			out.Values[i] = ec._MapVote_status(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4058,7 4111,7 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet)
	})

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		innerCtx := graphql.WithRootFieldContext(ctx, &graphql.RootFieldContext{
			Object: field.Name,


@@ 4069,91 4122,85 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet)
		case "__typename":
			out.Values[i] = graphql.MarshalString("Mutation")
		case "createUser":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_createUser(ctx, field)
			})

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "deleteUser":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_deleteUser(ctx, field)
			})

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "updateUser":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_updateUser(ctx, field)
			})

		case "startQueue":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_startQueue(ctx, field)
			})

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "cancelQueue":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_cancelQueue(ctx, field)
			})

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "createMatch":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_createMatch(ctx, field)
			})

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "cancelMatch":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_cancelMatch(ctx, field)
			})

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "finishMatch":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_finishMatch(ctx, field)
			})

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "vetoMap":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_vetoMap(ctx, field)
			})

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4166,7 4213,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
	})

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		innerCtx := graphql.WithRootFieldContext(ctx, &graphql.RootFieldContext{
			Object: field.Name,


@@ 4179,7 4226,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
		case "userBySteam":
			field := field

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
			innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 4190,16 4237,15 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
				return ec.OperationContext.RootResolverMiddleware(ctx,
					func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
			out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) })
		case "userByTS":
			field := field

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
			innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 4210,16 4256,15 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
				return ec.OperationContext.RootResolverMiddleware(ctx,
					func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
			out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) })
		case "getTeams":
			field := field

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
			innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 4227,38 4272,45 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
				}()
				res = ec._Query_getTeams(ctx, field)
				if res == graphql.Null {
					atomic.AddUint32(&invalids, 1)
					atomic.AddUint32(&fs.Invalids, 1)
				}
				return res
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
				return ec.OperationContext.RootResolverMiddleware(ctx,
					func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
			out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) })
		case "__type":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Query___type(ctx, field)
			})

		case "__schema":

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Query___schema(ctx, field)
			})

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4266,48 4318,53 @@ var teamsImplementors = []string{"Teams"}

func (ec *executionContext) _Teams(ctx context.Context, sel ast.SelectionSet, obj *model.Teams) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, teamsImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("Teams")
		case "team1":

			out.Values[i] = ec._Teams_team1(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "team2":

			out.Values[i] = ec._Teams_team2(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "captain1":

			out.Values[i] = ec._Teams_captain1(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "captain2":

			out.Values[i] = ec._Teams_captain2(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4315,63 4372,62 @@ var userImplementors = []string{"User"}

func (ec *executionContext) _User(ctx context.Context, sel ast.SelectionSet, obj *model.User) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, userImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("User")
		case "id":

			out.Values[i] = ec._User_id(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "steamID":

			out.Values[i] = ec._User_steamID(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "teamspeakID":

			out.Values[i] = ec._User_teamspeakID(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "elo":

			out.Values[i] = ec._User_elo(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "admin":

			out.Values[i] = ec._User_admin(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "avatar":

			out.Values[i] = ec._User_avatar(ctx, field, obj)

		case "name":

			out.Values[i] = ec._User_name(ctx, field, obj)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4379,52 4435,55 @@ var __DirectiveImplementors = []string{"__Directive"}

func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionSet, obj *introspection.Directive) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __DirectiveImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("__Directive")
		case "name":

			out.Values[i] = ec.___Directive_name(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "description":

			out.Values[i] = ec.___Directive_description(ctx, field, obj)

		case "locations":

			out.Values[i] = ec.___Directive_locations(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "args":

			out.Values[i] = ec.___Directive_args(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "isRepeatable":

			out.Values[i] = ec.___Directive_isRepeatable(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4432,42 4491,47 @@ var __EnumValueImplementors = []string{"__EnumValue"}

func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.EnumValue) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __EnumValueImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("__EnumValue")
		case "name":

			out.Values[i] = ec.___EnumValue_name(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "description":

			out.Values[i] = ec.___EnumValue_description(ctx, field, obj)

		case "isDeprecated":

			out.Values[i] = ec.___EnumValue_isDeprecated(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "deprecationReason":

			out.Values[i] = ec.___EnumValue_deprecationReason(ctx, field, obj)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4475,56 4539,57 @@ var __FieldImplementors = []string{"__Field"}

func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, obj *introspection.Field) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __FieldImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("__Field")
		case "name":

			out.Values[i] = ec.___Field_name(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "description":

			out.Values[i] = ec.___Field_description(ctx, field, obj)

		case "args":

			out.Values[i] = ec.___Field_args(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "type":

			out.Values[i] = ec.___Field_type(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "isDeprecated":

			out.Values[i] = ec.___Field_isDeprecated(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "deprecationReason":

			out.Values[i] = ec.___Field_deprecationReason(ctx, field, obj)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4532,42 4597,47 @@ var __InputValueImplementors = []string{"__InputValue"}

func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.InputValue) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __InputValueImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("__InputValue")
		case "name":

			out.Values[i] = ec.___InputValue_name(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "description":

			out.Values[i] = ec.___InputValue_description(ctx, field, obj)

		case "type":

			out.Values[i] = ec.___InputValue_type(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "defaultValue":

			out.Values[i] = ec.___InputValue_defaultValue(ctx, field, obj)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4575,53 4645,54 @@ var __SchemaImplementors = []string{"__Schema"}

func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, obj *introspection.Schema) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __SchemaImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("__Schema")
		case "description":

			out.Values[i] = ec.___Schema_description(ctx, field, obj)

		case "types":

			out.Values[i] = ec.___Schema_types(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "queryType":

			out.Values[i] = ec.___Schema_queryType(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "mutationType":

			out.Values[i] = ec.___Schema_mutationType(ctx, field, obj)

		case "subscriptionType":

			out.Values[i] = ec.___Schema_subscriptionType(ctx, field, obj)

		case "directives":

			out.Values[i] = ec.___Schema_directives(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}



@@ 4629,63 4700,56 @@ var __TypeImplementors = []string{"__Type"}

func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, obj *introspection.Type) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __TypeImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	deferred := make(map[string]*graphql.FieldSet)
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("__Type")
		case "kind":

			out.Values[i] = ec.___Type_kind(ctx, field, obj)

			if out.Values[i] == graphql.Null {
				invalids++
				out.Invalids++
			}
		case "name":

			out.Values[i] = ec.___Type_name(ctx, field, obj)

		case "description":

			out.Values[i] = ec.___Type_description(ctx, field, obj)

		case "fields":

			out.Values[i] = ec.___Type_fields(ctx, field, obj)

		case "interfaces":

			out.Values[i] = ec.___Type_interfaces(ctx, field, obj)

		case "possibleTypes":

			out.Values[i] = ec.___Type_possibleTypes(ctx, field, obj)

		case "enumValues":

			out.Values[i] = ec.___Type_enumValues(ctx, field, obj)

		case "inputFields":

			out.Values[i] = ec.___Type_inputFields(ctx, field, obj)

		case "ofType":

			out.Values[i] = ec.___Type_ofType(ctx, field, obj)

		case "specifiedByURL":

			out.Values[i] = ec.___Type_specifiedByURL(ctx, field, obj)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}
	}
	out.Dispatch()
	if invalids > 0 {
	out.Dispatch(ctx)
	if out.Invalids > 0 {
		return graphql.Null
	}

	atomic.AddInt32(&ec.deferred, int32(len(deferred)))

	for label, dfs := range deferred {
		ec.processDeferredGroup(graphql.DeferredGroup{
			Label:    label,
			Path:     graphql.GetPath(ctx),
			FieldSet: dfs,
			Context:  ctx,
		})
	}

	return out
}


M graph/model/models_gen.go => graph/model/models_gen.go +7 -7
@@ 10,7 10,7 @@ type MapVote struct {
type NewUser struct {
	SteamID     string  `json:"steamID"`
	TeamspeakID string  `json:"teamspeakID"`
	Avatar      *string `json:"avatar"`
	Avatar      *string `json:"avatar,omitempty"`
}

type Teams struct {


@@ 26,13 26,13 @@ type User struct {
	TeamspeakID string  `json:"teamspeakID"`
	Elo         int     `json:"elo"`
	Admin       bool    `json:"admin"`
	Avatar      *string `json:"avatar"`
	Name        *string `json:"name"`
	Avatar      *string `json:"avatar,omitempty"`
	Name        *string `json:"name,omitempty"`
}

type UserInput struct {
	Elo         *int    `json:"elo"`
	TeamspeakID *string `json:"teamspeakID"`
	Avatar      *string `json:"avatar"`
	Name        *string `json:"name"`
	Elo         *int    `json:"elo,omitempty"`
	TeamspeakID *string `json:"teamspeakID,omitempty"`
	Avatar      *string `json:"avatar,omitempty"`
	Name        *string `json:"name,omitempty"`
}

M graph/schema.resolvers.go => graph/schema.resolvers.go +1 -0
@@ 2,6 2,7 @@ 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.
// Code generated by github.com/99designs/gqlgen version v0.17.36

import (
	"context"