package dataloader
import (
"context"
"github.com/tribalwarshelp/shared/tw/twmodel"
)
type VersionDataLoader struct {
PlayerServersByID *PlayerServersLoader
PlayerNameChangesByID *PlayerNameChangesLoader
}
func NewVersionDataLoader(versionCode twmodel.VersionCode, cfg Config) *VersionDataLoader {
return &VersionDataLoader{
PlayerServersByID: &PlayerServersLoader{
wait: wait,
maxBatch: maxBatch,
fetch: func(keys []int) ([][]string, []error) {
playerServersByID, err := cfg.PlayerRepo.FetchPlayerServers(context.Background(), versionCode, 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{
fetch: func(keys []int) ([][]*twmodel.PlayerNameChange, []error) {
playerNameChangesByID, err := cfg.PlayerRepo.FetchNameChanges(context.Background(), versionCode, keys...)
inOrder := make([][]*twmodel.PlayerNameChange, len(keys))
inOrder[i] = playerNameChangesByID[id]