This repository has been archived on 2022-09-04. You can view files and clone it, but cannot push or open issues or pull requests.
api/graphql/dataloaders/lang_version_data_loaders.go

49 lines
1.3 KiB
Go

package dataloaders
import (
"context"
"time"
"github.com/tribalwarshelp/shared/models"
)
type LangVersionDataLoaders struct {
PlayerServersByID PlayerServersLoader
PlayerNameChangesByID PlayerNameChangesLoader
}
func NewLangVersionDataLoaders(langTag models.LanguageTag, cfg Config) *LangVersionDataLoaders {
return &LangVersionDataLoaders{
PlayerServersByID: PlayerServersLoader{
wait: 2 * time.Millisecond,
maxBatch: 0,
fetch: func(keys []int) ([][]string, []error) {
playerServersByID, err := cfg.PlayerRepo.FetchPlayerServers(context.Background(), langTag, keys...)
if err != nil {
return nil, []error{err}
}
inOrder := make([][]string, len(keys))
for i, id := range keys {
inOrder[i] = playerServersByID[id]
}
return inOrder, nil
},
},
PlayerNameChangesByID: PlayerNameChangesLoader{
wait: 2 * time.Millisecond,
maxBatch: 0,
fetch: func(keys []int) ([][]*models.PlayerNameChange, []error) {
playerNameChangesByID, err := cfg.PlayerRepo.FetchNameChanges(context.Background(), langTag, keys...)
if err != nil {
return nil, []error{err}
}
inOrder := make([][]*models.PlayerNameChange, len(keys))
for i, id := range keys {
inOrder[i] = playerNameChangesByID[id]
}
return inOrder, nil
},
},
}
}