Как заказать фрагмент указателей с помощью gqlgen и dataloaden (загрузчик данных graphql), если некоторые ключи имеют значение NULL?
У меня есть эти сущности:
- Структура Голанга:
type Player struct {
ID int
CreatedAt time.Time
City City
CityID int
Team *Team
TeamID *int
Score int
}
- Схема GraphQL:
type Player {
id: ID!
createdAt: Time!
City: City!
Team: Team
Score: Int!
}
Как вы видете:
City
является обязательнымTeam
(а такжеTeamID
в структуре Golang) НЕ является обязательным, поэтому я использую тип указателя (*
)
Сейчас я не понимаю, как использовать dataloaden
(загрузчик данных GraphQL).
Вот сгенерированный код для CityById
загрузчик, созданный с помощью: go run github.com/vektah/dataloaden CityByIdLoader int *my_project/entities.City
:
CityById: CityByIdLoader{
maxBatch: 100,
wait: 1 * time.Millisecond,
fetch: func(keys []int) ([]*entities.City, []error) {
cities, err := myRepo.CitiesByKeys(keys)
// directly ordered in DB based on keys` order: it works
return cities, []error{err}
},
},
Как насчет []*int
за TeamID
?
Вот сгенерированный код для TeamById
загрузчик, созданный с помощью: go run github.com/vektah/dataloaden TeamByIdLoader *int *my_project/entities.Team
:
TeamById: TeamByIdLoader{
maxBatch: 100,
wait: 1 * time.Millisecond,
fetch: func(keys []int) ([]*entities.Team, []error) {
teams, err := myRepo.TeamsByKeys(keys)
// I cannot order in DB because of `NULL` keys, right?
// How to order these results?
return teams, []error{err}
},
},
Я не понимаю, как переупорядочивать команды по ключам, если я не могу сделать это в БД из-за NULL
ценности в keys
.