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"} |