Pagination — базовая инфраструктура для постраничного представления данных
Базовая инфраструктура для постраничного представления данных позволяет унифицировать работу со списками по всему проекту Telecom на стороне BE и FE.
Так же позволяет на стороне BE работать только с методами базового репозитория BaseRepository<TEntity> (без разбухания кодовой базы) для генерации ответа.
Используя метод Task<PaginationResult<TEntity>> GetAll([NotNull] PaginationQuery paginationQuery, bool noTracking = false);
Реализация: Common.Pagination
В реализации, будет поиск по полям сущности отмеченной атрибутом QuickFilterAttribute
Запрос
Поле | Описание | Тип | Обязательность | По умолчанию | Ограничения |
---|---|---|---|---|---|
page | Номер страницы | числовой | нет | 1 | — |
pageSize | Размер страницы | числовой | нет | 25 | Максимум 100 |
filter | Строка поиска | текстовое | нет | — | — |
filterBy | Поле для поиска | текстовое | нет | — | — |
orderBy | Поле для сортировки | текстовое | нет | без сортировки | существующее поле БД коллекции |
sort | Направление сортировки | текстовое | нет | без сортировки | asc/desc |
Пример запроса:
/account/roles/?page=1&pageSize=10
/account/roles/?filter=Спец&page=1&pageSize=10
/account/roles/?filter=Спец&page=1&pageSize=10&orderBy=title&sort=desc
Ответ
Поле | Описание | Тип |
---|---|---|
items | Массив данных | массив |
pageInfo | Информация о странице | класс |
Описание типа PageInfo
Поле | Описание | Тип | Обязательность |
---|---|---|---|
page | Номер страницы | числовой | да |
pageSize | Размер страницы | числовой | да |
totalPage | Всего страниц | числовой | да |
totalItem | Всего найденных элементов | числовой | да |
filter | Строка поиска | текстовое | нет |
filterBy | Поле для поиска | текстовое | нет |
orderBy | Поле для сортировки | текстовое | нет |
sort | Направление сортировки | текстовое (asc/desc) | нет |
Пример ответа:
{ "items" : [ { "name" : "FinancialExpert" , "title" : "Финансовый специалист" , "id" : "592c27710e81e6b8b06a6b05" }, { "name" : "TransportExpert" , "title" : "Транспортный специалист" , "id" : "592c27710e81e6b8b06a6b03" }, { "name" : "TechnicalExpert" , "title" : "Технический специалист" , "id" : "592c27710e81e6b8b06a6b04" } ], "pageInfo" : { "page" : 3, "pageSize" : 10, "totalPage" : 3, "totalItem" : 23, "filter" : "спец" , "filterBy" : "title" , "orderBy" : "title" , "sort" : "Desc" } |