47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
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{
|
|
wait: wait,
|
|
maxBatch: maxBatch,
|
|
fetch: func(keys []int) ([][]*twmodel.PlayerNameChange, []error) {
|
|
playerNameChangesByID, err := cfg.PlayerRepo.FetchNameChanges(context.Background(), versionCode, keys...)
|
|
if err != nil {
|
|
return nil, []error{err}
|
|
}
|
|
inOrder := make([][]*twmodel.PlayerNameChange, len(keys))
|
|
for i, id := range keys {
|
|
inOrder[i] = playerNameChangesByID[id]
|
|
}
|
|
return inOrder, nil
|
|
},
|
|
},
|
|
}
|
|
}
|