Laravel Lighthouse GraphQL - Сортировка на стороне сервера

Привет, я новичок в GraphQL, и я пытаюсь отсортировать свои данные на основе содержимого столбца. У меня есть конечная точка запроса, куда я могу отправить:

query {
  user(count:20, firstName:"Foo") {
    data {
      name
      region
      birthDate
    }
  }
}

В результате получился массив из 20 пользователей с именем Foo. Но я хочу заказать их по birthDate. Я уже столько всего перепробовал, но никак не могу разобраться. Я уже пробовал добавлять sort и orderBy после firstName, но всегда получаю такие ошибки, как:

{
  "errors": [
    {
      "message": "Unknown argument \"sort\" on field \"user\" of type \"Query\".",
      "extensions": {
        "category": "graphql"
      },
      "locations": [
        {
          "line": 2,
          "column": 31
        }
      ]
    }
  ]
}

Я использую Laravel Lighthouse в качестве ваппера для GraphQL. Я удивлен, что не смог найти никакой информации о том, как это сделать.

Мой запрос:

type Query {
    user(firstName: String @eq): [User!]! @paginate(type: "paginator" model: "App\\User")
}

type User {
    id: ID!
    firstName: String!
    lastName: String!
    birthDate: DateTime!
    email: String!
    created_at: DateTime!
    updated_at: DateTime!
}

person TheKeymaster    schedule 14.07.2019    source источник


Ответы (1)


После часа поисков я наконец нашел его. Я обновил свой файл graphql следующим образом:

type Query {
    user(firstName: String @eq orderBy: [OrderByClause!] @orderBy): [User!]! @paginate(type: "paginator" model: "App\\User")
}

type User {
    id: ID!
    firstName: String!
    lastName: String!
    birthDate: DateTime!
    email: String!
    created_at: DateTime!
    updated_at: DateTime!
}

input OrderByClause{
    field: String!
    order: SortOrder!
}

enum SortOrder {
    ASC
    DESC
}

Теперь с помощью этого запроса они будут правильно отсортированы по дате рождения:

query {
  user(count:20, firstName:"Foo", orderBy: [
        {
          field: "birthDate"
          order: DESC
        }
    ]) {
    data {
      name
      region
      birthDate
    }
  }
}
person TheKeymaster    schedule 14.07.2019
comment
Благодарность! это спасло меня от многих часов злобных поисков. знак равно - person aibarra; 22.05.2020