Size: a a a

GraphQL — русскоговорящее сообщество

2020 March 11

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
toriningen
сам курсор - простой jwt
Все хорошо расписано. Но JWT прям зря. Короче и быстрее будет:
base64(JSON.stringify(__cursor_data__))
источник

t

toriningen in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Все хорошо расписано. Но JWT прям зря. Короче и быстрее будет:
base64(JSON.stringify(__cursor_data__))
не хотели давать возможность клиенту модифицировать запрос. там на подписи hmac, он быстрый
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
А в курсорной пагинации нет страниц обычно. Их дорого считать на сервере.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
toriningen
не хотели давать возможность клиенту модифицировать запрос. там на подписи hmac, он быстрый
Разумно 👍
источник

A1

Art 141 in GraphQL — русскоговорящее сообщество
toriningen
не хотели давать возможность клиенту модифицировать запрос. там на подписи hmac, он быстрый
Прикольно.
источник

A1

Art 141 in GraphQL — русскоговорящее сообщество
Но про расчет курсоров на другие далёкие страницы у меня как-то так и не ложится, как их с нормальной производительностью рассчитывать...
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
toriningen
не хотели давать возможность клиенту модифицировать запрос. там на подписи hmac, он быстрый
Так вы получается в курсор зашили текущий page, perPage?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
И уже просто к его значение делаете +-1 страницы?
источник

t

toriningen in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Так вы получается в курсор зашили текущий page, perPage?
да, который нигде и ни для чего не используется, кроме как для целей представления - и когда этот курсор используется для того, чтобы выдать следующую страницу, то perPage (у нас его нет, но допустим) будет тот же, а page будет либо +1, либо -1 от текущего.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Капец вы там курнули )
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Прям очень круто. Я вообще до этого не допер, когда реализовывал свой коннекшен.
источник

t

toriningen in GraphQL — русскоговорящее сообщество
вам не нужно именно рассчитывать курсор на далекие страницы, в зависимости от того, что вы делаете.

- вы можете получить последнюю запись (и только последнюю?). например, обратить сортировку и сделать limit 1? если да, то у вас уже есть опорный первичный ключ
источник

t

toriningen in GraphQL — русскоговорящее сообщество
просто этот курсор, который указывает на последнюю запись, будет вести не "вперед" (т.е. "все, что ПОСЛЕ этой записи невключительно"), а "назад" (т.е. "включая этот ключ, 10 записей до него")
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
И даже если у вас будет на странице переключалка кол-ва элементов. То вы просто сбросите клиента в начало списка и пущай листает сначала. Прям годный вариант гибрида коннекшена и пагинации! Прям топчик!
источник

t

toriningen in GraphQL — русскоговорящее сообщество
Pavel @nodkz
И даже если у вас будет на странице переключалка кол-ва элементов. То вы просто сбросите клиента в начало списка и пущай листает сначала. Прям годный вариант гибрида коннекшена и пагинации! Прям топчик!
у нас нет переключалки количества элементов, но если бы была, то можно было бы просто в кверю запихнуть, сколько человек хочет элементов на странице - курсор останется прежний
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Но вы не по спеке Релеевской пошли. Вы грубо говоря свою реализацию сделали. У релея для каждой записи курсор формируется. А у вас для всего резалт сета
источник

t

toriningen in GraphQL — русскоговорящее сообщество
т.е. при одинаковом курсоре, если сделать query на 100 элементов и на 20 элементов, то первые 20 элементов из большого запроса будут такими же, как в маленьком
источник

t

toriningen in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Но вы не по спеке Релеевской пошли. Вы грубо говоря свою реализацию сделали. У релея для каждой записи курсор формируется. А у вас для всего резалт сета
да, есть такое. нам показалось избыточным делать возможность мотаться в "середину страницы"
источник

A1

Art 141 in GraphQL — русскоговорящее сообщество
toriningen
вам не нужно именно рассчитывать курсор на далекие страницы, в зависимости от того, что вы делаете.

- вы можете получить последнюю запись (и только последнюю?). например, обратить сортировку и сделать limit 1? если да, то у вас уже есть опорный первичный ключ
А если надо не просто последнюю страницу, а 5 последних, то 5 запросов в бд?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
toriningen
у нас нет переключалки количества элементов, но если бы была, то можно было бы просто в кверю запихнуть, сколько человек хочет элементов на странице - курсор останется прежний
курсор не останется прежним, вы просто сгенирууете новый курсор на данных предыдущего (при этом не надо будет ковырять записи в базе)
источник