7a00f10f33fcb27cc3add4edab34654c2a576f5e — Drew DeVault 1 year, 2 days ago bc87a4b
API: fetch user context in loader implementation

Fetching it outside of this function will cause it to attempt to fetch
the auth context when the middleware is stood up, which occurs
unconditionally on all requests -- including unauthenticated ones, such
as /query/metrics. Moving it into the function body causes it to only
occur once we actually attempt to fetch jobs.
2 files changed, 2 insertions(+), 1 deletions(-)

M api/graph/schema.resolvers.go
M api/loaders/middleware.go
M api/graph/schema.resolvers.go => api/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.29

import (

M api/loaders/middleware.go => api/loaders/middleware.go +1 -1
@@ 119,8 119,8 @@ func fetchUsersByName(ctx context.Context) func(names []string) ([]*model.User, 

func fetchJobsByID(ctx context.Context) func(ids []int) ([]*model.Job, []error) {
	user := auth.ForContext(ctx)
	return func(ids []int) ([]*model.Job, []error) {
		user := auth.ForContext(ctx)
		jobs := make([]*model.Job, len(ids))
		if err := database.WithTx(ctx, &sql.TxOptions{
			Isolation: 0,