diff --git a/graphql/dataloaders/data_loaders.go b/graphql/dataloader/data_loader.go similarity index 87% rename from graphql/dataloaders/data_loaders.go rename to graphql/dataloader/data_loader.go index dc721cc..76cd76e 100644 --- a/graphql/dataloaders/data_loaders.go +++ b/graphql/dataloader/data_loader.go @@ -1,4 +1,4 @@ -package dataloaders +package dataloader import ( "context" @@ -12,10 +12,11 @@ import ( ) const ( - wait = 4 * time.Millisecond + wait = 2 * time.Millisecond + maxBatch = 200 ) -type DataLoaders struct { +type DataLoader struct { VersionByCode *VersionLoader } @@ -26,11 +27,11 @@ type Config struct { VersionRepo version.Repository } -func NewDataLoaders(cfg Config) *DataLoaders { - return &DataLoaders{ +func NewDataLoader(cfg Config) *DataLoader { + return &DataLoader{ VersionByCode: &VersionLoader{ wait: wait, - maxBatch: 0, + maxBatch: maxBatch, fetch: func(keys []string) ([]*twmodel.Version, []error) { var codes []twmodel.VersionCode for _, code := range keys { diff --git a/graphql/dataloaders/playerloader_gen.go b/graphql/dataloader/playerloader_gen.go similarity index 99% rename from graphql/dataloaders/playerloader_gen.go rename to graphql/dataloader/playerloader_gen.go index 6086f7f..46e03e3 100644 --- a/graphql/dataloaders/playerloader_gen.go +++ b/graphql/dataloader/playerloader_gen.go @@ -1,6 +1,6 @@ // Code generated by github.com/vektah/dataloaden, DO NOT EDIT. -package dataloaders +package dataloader import ( "github.com/tribalwarshelp/shared/tw/twmodel" diff --git a/graphql/dataloaders/playernamechangesloader_gen.go b/graphql/dataloader/playernamechangesloader_gen.go similarity index 99% rename from graphql/dataloaders/playernamechangesloader_gen.go rename to graphql/dataloader/playernamechangesloader_gen.go index ae99df9..c885752 100644 --- a/graphql/dataloaders/playernamechangesloader_gen.go +++ b/graphql/dataloader/playernamechangesloader_gen.go @@ -1,6 +1,6 @@ // Code generated by github.com/vektah/dataloaden, DO NOT EDIT. -package dataloaders +package dataloader import ( "github.com/tribalwarshelp/shared/tw/twmodel" diff --git a/graphql/dataloaders/playerserversloader_gen.go b/graphql/dataloader/playerserversloader_gen.go similarity index 99% rename from graphql/dataloaders/playerserversloader_gen.go rename to graphql/dataloader/playerserversloader_gen.go index 2e0ae80..3b84755 100644 --- a/graphql/dataloaders/playerserversloader_gen.go +++ b/graphql/dataloader/playerserversloader_gen.go @@ -1,6 +1,6 @@ // Code generated by github.com/vektah/dataloaden, DO NOT EDIT. -package dataloaders +package dataloader import ( "sync" diff --git a/graphql/dataloaders/server_data_loaders.go b/graphql/dataloader/server_data_loader.go similarity index 90% rename from graphql/dataloaders/server_data_loaders.go rename to graphql/dataloader/server_data_loader.go index b1e880f..21ada90 100644 --- a/graphql/dataloaders/server_data_loaders.go +++ b/graphql/dataloader/server_data_loader.go @@ -1,4 +1,4 @@ -package dataloaders +package dataloader import ( "context" @@ -9,17 +9,17 @@ import ( "github.com/tribalwarshelp/api/village" ) -type ServerDataLoaders struct { +type ServerDataLoader struct { PlayerByID *PlayerLoader TribeByID *TribeLoader VillageByID *VillageLoader } -func NewServerDataLoaders(server string, cfg Config) *ServerDataLoaders { - return &ServerDataLoaders{ +func NewServerDataLoader(server string, cfg Config) *ServerDataLoader { + return &ServerDataLoader{ PlayerByID: &PlayerLoader{ wait: wait, - maxBatch: 0, + maxBatch: maxBatch, fetch: func(ids []int) ([]*twmodel.Player, []error) { players, _, err := cfg.PlayerRepo.Fetch(context.Background(), player.FetchConfig{ Filter: &twmodel.PlayerFilter{ @@ -47,7 +47,7 @@ func NewServerDataLoaders(server string, cfg Config) *ServerDataLoaders { }, TribeByID: &TribeLoader{ wait: wait, - maxBatch: 0, + maxBatch: maxBatch, fetch: func(ids []int) ([]*twmodel.Tribe, []error) { tribes, _, err := cfg.TribeRepo.Fetch(context.Background(), tribe.FetchConfig{ Server: server, @@ -75,7 +75,7 @@ func NewServerDataLoaders(server string, cfg Config) *ServerDataLoaders { }, VillageByID: &VillageLoader{ wait: wait, - maxBatch: 0, + maxBatch: maxBatch, fetch: func(ids []int) ([]*twmodel.Village, []error) { villages, _, err := cfg.VillageRepo.Fetch(context.Background(), village.FetchConfig{ Server: server, diff --git a/graphql/dataloaders/tribeloader_gen.go b/graphql/dataloader/tribeloader_gen.go similarity index 99% rename from graphql/dataloaders/tribeloader_gen.go rename to graphql/dataloader/tribeloader_gen.go index 1c07b00..b49bc35 100644 --- a/graphql/dataloaders/tribeloader_gen.go +++ b/graphql/dataloader/tribeloader_gen.go @@ -1,6 +1,6 @@ // Code generated by github.com/vektah/dataloaden, DO NOT EDIT. -package dataloaders +package dataloader import ( "github.com/tribalwarshelp/shared/tw/twmodel" diff --git a/graphql/dataloaders/version_data_loaders.go b/graphql/dataloader/version_data_loader.go similarity index 83% rename from graphql/dataloaders/version_data_loaders.go rename to graphql/dataloader/version_data_loader.go index 21b91f7..64a69cc 100644 --- a/graphql/dataloaders/version_data_loaders.go +++ b/graphql/dataloader/version_data_loader.go @@ -1,20 +1,20 @@ -package dataloaders +package dataloader import ( "context" "github.com/tribalwarshelp/shared/tw/twmodel" ) -type VersionDataLoaders struct { +type VersionDataLoader struct { PlayerServersByID *PlayerServersLoader PlayerNameChangesByID *PlayerNameChangesLoader } -func NewVersionDataLoaders(versionCode twmodel.VersionCode, cfg Config) *VersionDataLoaders { - return &VersionDataLoaders{ +func NewVersionDataLoader(versionCode twmodel.VersionCode, cfg Config) *VersionDataLoader { + return &VersionDataLoader{ PlayerServersByID: &PlayerServersLoader{ wait: wait, - maxBatch: 0, + maxBatch: maxBatch, fetch: func(keys []int) ([][]string, []error) { playerServersByID, err := cfg.PlayerRepo.FetchPlayerServers(context.Background(), versionCode, keys...) if err != nil { @@ -29,7 +29,7 @@ func NewVersionDataLoaders(versionCode twmodel.VersionCode, cfg Config) *Version }, PlayerNameChangesByID: &PlayerNameChangesLoader{ wait: wait, - maxBatch: 0, + maxBatch: maxBatch, fetch: func(keys []int) ([][]*twmodel.PlayerNameChange, []error) { playerNameChangesByID, err := cfg.PlayerRepo.FetchNameChanges(context.Background(), versionCode, keys...) if err != nil { diff --git a/graphql/dataloaders/versionloader_gen.go b/graphql/dataloader/versionloader_gen.go similarity index 99% rename from graphql/dataloaders/versionloader_gen.go rename to graphql/dataloader/versionloader_gen.go index 4c14756..5e3eb08 100644 --- a/graphql/dataloaders/versionloader_gen.go +++ b/graphql/dataloader/versionloader_gen.go @@ -1,6 +1,6 @@ // Code generated by github.com/vektah/dataloaden, DO NOT EDIT. -package dataloaders +package dataloader import ( "github.com/tribalwarshelp/shared/tw/twmodel" diff --git a/graphql/dataloaders/villageloader_gen.go b/graphql/dataloader/villageloader_gen.go similarity index 99% rename from graphql/dataloaders/villageloader_gen.go rename to graphql/dataloader/villageloader_gen.go index 55aaa1e..ad31a63 100644 --- a/graphql/dataloaders/villageloader_gen.go +++ b/graphql/dataloader/villageloader_gen.go @@ -1,6 +1,6 @@ // Code generated by github.com/vektah/dataloaden, DO NOT EDIT. -package dataloaders +package dataloader import ( "github.com/tribalwarshelp/shared/tw/twmodel" diff --git a/graphql/delivery/http/handler.go b/graphql/delivery/http/handler.go index ec3ebcb..3c0e9e9 100644 --- a/graphql/delivery/http/handler.go +++ b/graphql/delivery/http/handler.go @@ -49,7 +49,6 @@ func graphqlHandler(cfg generated.Config) gin.HandlerFunc { srv.AddTransport(transport.GET{}) srv.AddTransport(transport.POST{}) - srv.AddTransport(transport.MultipartForm{}) srv.Use(extension.Introspection{}) srv.Use(extension.AutomaticPersistedQuery{ Cache: lru.New(100), diff --git a/graphql/resolvers/server.go b/graphql/resolvers/server.go index 05e2bc2..fcdc7d1 100644 --- a/graphql/resolvers/server.go +++ b/graphql/resolvers/server.go @@ -12,7 +12,7 @@ import ( ) func (r *serverResolver) Version(ctx context.Context, obj *twmodel.Server) (*twmodel.Version, error) { - loaders := middleware.DataLoadersFromContext(ctx) + loaders := middleware.DataLoaderFromContext(ctx) if loaders != nil { lv, _ := loaders.VersionByCode.Load(obj.VersionCode.String()) return lv, nil diff --git a/main.go b/main.go index 18c4fbf..5530af6 100644 --- a/main.go +++ b/main.go @@ -18,7 +18,7 @@ import ( httpdelivery "github.com/tribalwarshelp/api/graphql/delivery/http" "github.com/tribalwarshelp/api/graphql/resolvers" - "github.com/tribalwarshelp/api/graphql/dataloaders" + "github.com/tribalwarshelp/api/graphql/dataloader" dailyplayerstatsrepo "github.com/tribalwarshelp/api/dailyplayerstats/repository" dailyplayerstatsucase "github.com/tribalwarshelp/api/dailyplayerstats/usecase" @@ -132,7 +132,7 @@ func main() { middleware.DataLoadersToContextConfig{ ServerRepo: serverRepo, }, - dataloaders.Config{ + dataloader.Config{ PlayerRepo: playerRepo, TribeRepo: tribeRepo, VillageRepo: villageRepo, diff --git a/middleware/dataloaders_to_context.go b/middleware/dataloaders_to_context.go index df3b109..1b551ec 100644 --- a/middleware/dataloaders_to_context.go +++ b/middleware/dataloaders_to_context.go @@ -10,23 +10,23 @@ import ( "github.com/gin-gonic/gin" - "github.com/tribalwarshelp/api/graphql/dataloaders" + "github.com/tribalwarshelp/api/graphql/dataloader" "github.com/tribalwarshelp/api/server" ) var serverDataLoadersContextKey ContextKey = "serverDataLoaders" -var versionLoadersContextKey ContextKey = "versionLoaders" -var dataloadersContextKey ContextKey = "dataloaders" +var versionDataLoadersContextKey ContextKey = "versionLoaders" +var dataLoaderContextKey ContextKey = "dataloader" type DataLoadersToContextConfig struct { ServerRepo server.Repository } -func DataLoadersToContext(dltcc DataLoadersToContextConfig, cfg dataloaders.Config) gin.HandlerFunc { +func DataLoadersToContext(dltcc DataLoadersToContextConfig, cfg dataloader.Config) gin.HandlerFunc { return func(c *gin.Context) { ctx := c.Request.Context() - serverDataLoaders := make(map[string]*dataloaders.ServerDataLoaders) - versionDataLoaders := make(map[twmodel.VersionCode]*dataloaders.VersionDataLoaders) + serverDataLoaders := make(map[string]*dataloader.ServerDataLoader) + versionDataLoaders := make(map[twmodel.VersionCode]*dataloader.VersionDataLoader) servers, _, err := dltcc.ServerRepo.Fetch(c.Request.Context(), server.FetchConfig{ Columns: []string{strutil.Underscore("versionCode"), "key"}, Select: true, @@ -39,54 +39,54 @@ func DataLoadersToContext(dltcc DataLoadersToContextConfig, cfg dataloaders.Conf return } for _, serv := range servers { - serverDataLoaders[serv.Key] = dataloaders.NewServerDataLoaders(serv.Key, cfg) + serverDataLoaders[serv.Key] = dataloader.NewServerDataLoader(serv.Key, cfg) if _, ok := versionDataLoaders[serv.VersionCode]; !ok { - versionDataLoaders[serv.VersionCode] = dataloaders.NewVersionDataLoaders(serv.VersionCode, cfg) + versionDataLoaders[serv.VersionCode] = dataloader.NewVersionDataLoader(serv.VersionCode, cfg) } } ctx = StoreServerDataLoadersInContext(ctx, serverDataLoaders) ctx = StoreVersionDataLoadersInContext(ctx, versionDataLoaders) - ctx = StoreDataLoadersInContext(ctx, dataloaders.NewDataLoaders(cfg)) + ctx = StoreDataLoaderInContext(ctx, dataloader.NewDataLoader(cfg)) c.Request = c.Request.WithContext(ctx) c.Next() } } -func StoreServerDataLoadersInContext(ctx context.Context, loaders map[string]*dataloaders.ServerDataLoaders) context.Context { +func StoreServerDataLoadersInContext(ctx context.Context, loaders map[string]*dataloader.ServerDataLoader) context.Context { return context.WithValue(ctx, serverDataLoadersContextKey, loaders) } -func ServerDataLoadersFromContext(ctx context.Context) map[string]*dataloaders.ServerDataLoaders { +func ServerDataLoadersFromContext(ctx context.Context) map[string]*dataloader.ServerDataLoader { dl := ctx.Value(serverDataLoadersContextKey) if dl == nil { return nil } - return dl.(map[string]*dataloaders.ServerDataLoaders) + return dl.(map[string]*dataloader.ServerDataLoader) } -func StoreVersionDataLoadersInContext(ctx context.Context, loaders map[twmodel.VersionCode]*dataloaders.VersionDataLoaders) context.Context { - return context.WithValue(ctx, versionLoadersContextKey, loaders) +func StoreVersionDataLoadersInContext(ctx context.Context, loaders map[twmodel.VersionCode]*dataloader.VersionDataLoader) context.Context { + return context.WithValue(ctx, versionDataLoadersContextKey, loaders) } -func VersionDataLoadersFromContext(ctx context.Context) map[twmodel.VersionCode]*dataloaders.VersionDataLoaders { - dl := ctx.Value(versionLoadersContextKey) +func VersionDataLoadersFromContext(ctx context.Context) map[twmodel.VersionCode]*dataloader.VersionDataLoader { + dl := ctx.Value(versionDataLoadersContextKey) if dl == nil { return nil } - return dl.(map[twmodel.VersionCode]*dataloaders.VersionDataLoaders) + return dl.(map[twmodel.VersionCode]*dataloader.VersionDataLoader) } -func StoreDataLoadersInContext(ctx context.Context, loaders *dataloaders.DataLoaders) context.Context { - return context.WithValue(ctx, dataloadersContextKey, loaders) +func StoreDataLoaderInContext(ctx context.Context, loaders *dataloader.DataLoader) context.Context { + return context.WithValue(ctx, dataLoaderContextKey, loaders) } -func DataLoadersFromContext(ctx context.Context) *dataloaders.DataLoaders { - dl := ctx.Value(dataloadersContextKey) +func DataLoaderFromContext(ctx context.Context) *dataloader.DataLoader { + dl := ctx.Value(dataLoaderContextKey) if dl == nil { return nil } - return dl.(*dataloaders.DataLoaders) + return dl.(*dataloader.DataLoader) }