Как заказать фрагмент указателей с помощью 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!
}

Как вы видете:

  1. City является обязательным

  2. 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.

0 ответов

Другие вопросы по тегам