Skip to content

Commit 1a2fdd5

Browse files
authored
Merge pull request #126 from ConductionNL/feature/DIMOC-234/pagination
Enable pagination parameters
2 parents bdcb133 + 0da6864 commit 1a2fdd5

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

lib/Controller/SearchController.php

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,28 @@ public function index(SearchService $searchService): JSONResponse
9595

9696
$fieldsToSearch = ['title', 'description', 'summary'];
9797

98-
if($this->config->hasKey($this->appName, 'mongoStorage') === false
99-
|| $this->config->getValueString($this->appName, 'mongoStorage') !== '1'
98+
if($this->config->hasKey($this->appName, 'elasticLocation') === false
99+
|| $this->config->getValueString($this->appName, 'elasticLocation') === ''
100100
) {
101101
$searchParams = $searchService->createMySQLSearchParams(filters: $filters);
102102
$searchConditions = $searchService->createMySQLSearchConditions(filters: $filters, fieldsToSearch: $fieldsToSearch);
103+
104+
$limit = null;
105+
$offset = null;
106+
107+
if(isset($filters['_limit']) === true) {
108+
$limit = $filters['_limit'];
109+
}
110+
111+
if(isset($filters['_page']) === true) {
112+
$offset = ($limit * ($filters['_page'] - 1));
113+
}
114+
103115
$filters = $searchService->unsetSpecialQueryParams(filters: $filters);
104116

105-
return new JSONResponse(['results' => $this->publicationMapper->findAll(limit: null, offset: null, filters: $filters, searchConditions: $searchConditions, searchParams: $searchParams)]);
117+
118+
119+
return new JSONResponse(['results' => $this->publicationMapper->findAll(limit: $limit, offset: $offset, filters: $filters, searchConditions: $searchConditions, searchParams: $searchParams)]);
106120
}
107121

108122
//@TODO: find a better way to get query params. This fixes it for now.

lib/Service/ElasticSearchService.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,18 @@ public function parseFilters (array $filters): array
124124
];
125125
}
126126

127+
if(isset($filters['.limit']) === true) {
128+
$body['size'] = $filters['.limit'];
129+
unset($filters['.limit']);
130+
}
131+
132+
if(isset($filters['.page']) === true) {
133+
if(isset($body['size']) === true) {
134+
$body['from'] = $body['size'] * ($filters['.page'] - 1);
135+
}
136+
unset($filters['.page']);
137+
}
138+
127139
unset($filters['.search'], $filters['.queries'], $filters['.catalogi']);
128140

129141
foreach ($filters as $name => $filter) {

0 commit comments

Comments
 (0)