Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Сортировка результатов #37

Closed
5 tasks done
leshchenko1979 opened this issue Aug 4, 2020 · 2 comments
Closed
5 tasks done

Сортировка результатов #37

leshchenko1979 opened this issue Aug 4, 2020 · 2 comments
Labels
enhancement New feature or request

Comments

@leshchenko1979
Copy link
Owner

leshchenko1979 commented Aug 4, 2020

Сейчас сложно писать куски кода, где предполагается определенный порядок элементов в возвращаемом списке.

Например, по get_all() предполагается, что элементы отсортированы по ID, а по get_by_ID и call, что порядок элементов в результатах вызова такой же, как и во входных массивах.

Однако есть развилки:

get_all()

  • А мы уверены, что в каждом списке будет ID? Или, более общо, элемент, по которому будет сортировка? Как нам понять, есть он или нет?

Решение:

- [ ] Если есть ID, то сортировать по нему. Если его нет, то не сортировать. - решил, что в этом нет потребности. Сортировка потребует конверсии ID в int, а это может быть неожиданным для пользователя.

get_by_ID()

  • Что возвращать?
    • dict вида ID: results?
      • сломается имеющийся код
      • но поиск в результатах вызова будет очень прост
    • tuple вида (ID, results), где tuple отсортирован по ID?
      • код не сломается
    • просто список списков результатов, отсортированный также, как и входящий список
      • код сломается
      • поиск в результатах вызова также будет прост
      • кажется, что список списков - это менее понятно, чем dict
      • будет хорошая аналогия со структурой результатов, возвращаемых методом call()

Решение:

  • Пока что сортировать текущий list of tuples
    • Оказалось, что в этом нет смысла, пока в _get_by_ID на входе происходит дедупликация списка ID через преобразование его в set.
      • [х] Нужно выбрать один из вариантов:
        • при получении дублей на вход поднимать исключение,
        • не обращать внимание на дубли и делать запросы столько раз, сколько запросил пользователь - отличная идея для начала, так как она убирает неожиданное для пользователя поведение
          • Убрать дедупликацию ID_list на входе
          • Сортировать результаты согласно порядок элементов в ID_list
        • отказаться от идеи сортировки списка результатов

call()

  • Если сортировать результаты так же, как и запросы, то как это сделать через код?

  • Надо сделать preserve_IDs, на место IDs подавать номер элемента item_list. Потом по этому номеру делать сопоставление результатов в выходном массиве.

  • Поправить всю доку касательно сортировки

@leshchenko1979 leshchenko1979 added the enhancement New feature or request label Aug 4, 2020
@leshchenko1979
Copy link
Owner Author

Разработка идёт в ветке sort

@leshchenko1979
Copy link
Owner Author

Часть вопросов перенесена в #45

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant