Нам нужны твои мозги

Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.

На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решение.

Помощь запрашиваетМиша МеркушинМиша Меркушин Миша Меркушин

Бэк: Добавить поддержку desc сортировки в Ruby gem graphql-connections

Для новичков, задача на несколько дней

graphql-connections — Ruby gem, расширяющий стандартные имплементации пагинаций GraphQL Ruby.

В текущей версии для пагинации Stable поддерживается только :asc сортировка в режиме :primary_key. Необходимо добавить поддержку :desc сортировки.

Польза: разобраться с устройством graphql-ruby, прокачаться в Ruby, принести пользу сообществу.

Постановка задачи

В конечно итоге, вот такой способ инициализации пагинации должен сработать, т.е. при передаче параметра desc: true нужно возвращать записи в обратном порядке.

GraphQL::Connections::Stable.new(Message.all, primary_key: :created_at, desc: true)

Советы по реализации

  1. Стоить обратить внимание как уже работает desc сортировка в keys режиме.
  2. Возможно стоить немного отрефакторить, чтобы уменьшить количество дублируемого кода.

Инструкции по выполнению

  1. Форкнуть проект graphql-connections на GitHub.
  2. Реализовать необходимый функционал, покрыть его тестами и задокументировать.
  3. Сделать Pull Request.

Присылайте свои решения: