Как стать автором
Обновить

Комментарии 10

Было бы интересно посмотреть на многоуровневую сортировку и группировку.
На всякий случай объясняю:
1. Возможность передать список полей/свойств по которым нужно отсортировать.
2. Возможность передать список полей/свойств по которым нужно сгруппировать. Группировка многоуровневая, т.е. условно, у продукта есть свойства категория, тип, остальные свойства, мы ходим сначала сгруппировать по типу, а дальше - по категории.

Я правильно понимаю, что если будет использоваться фильтр, из-за которого нужно приджоинить таблицу к запросу, то все равно все сведется к if-ам?

Если я правильно понял ваш вопрос, то нет, if-ами не придётся пользоваться.

Вот ссылка на пример с outerjoin-ом.

Ссылка откроется нормально только в Chrome, так как она сформирована его возможностями ссылки на любой выделенный текст на странице.

Пагинация выглядит так, что мы сначала фильтруем и извлекаем из базы все данные, а потом уже выделяем нужную страницу. При этом мы загружаем в память все подходящие под фильтр данные, а затем уже эти данные нарезаем на страницы. Это нормально работает когда у нас всего строк в таблице и десятка не наберется. Когда окажется, что в таблице пара миллионов строк, 100 000 подходит под фильтр, а нам нужны только первые 15, загружать все 100к в память будет грустно. А если пользователь решит идти по страницам, то все вышеуказанное мы будем делать для каждой страницы.

И еще. Идея добавлять в конец списка результатов информацию о странице выглядит сомнительно. Обращаясь к этому API, я должен помнить, что у меня в одной коллекции могут быть сущности разных типов, что сильно усложняет обработку результата.

Да, результат запроса надо просто положить на уровень вложенности глубже, в какой нибудь список /results: [...].

И чем это поможет? У вас следующий запрос может быть с другими фильтрами, и то что вы так изящно закешировали станет бесполезным.

Я не очень понял что я и где кешировал в своём ответе, я лишь прокомментировал последний абзац вашего комментария, в целом я полностью согласен с вами

Я воспринял как желание кешировать ваш ответ про

результат запроса надо просто положить на уровень вложенности глубже, в какой нибудь список /results: [...]

Либо я не понял что и куда вы предлагаете положить.

Я думаю, что речь о том, чтобы создать словарь с двумя ключами: списком и информацией о странице.

Да, теперь я понял, о чем вы, прошу прощения. Да, проблему с объектами разных типов словарь со списком результатов и метаданными о странице решит. Но пагинация все равно ужасно и неэффективно сделана.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации