Support descending ordering in generic API filter (closes #1167)

This commit is contained in:
Bernd Bestel
2020-12-09 21:04:04 +01:00
parent 19802bc122
commit fda8411ab3
3 changed files with 20 additions and 3 deletions

View File

@@ -47,14 +47,31 @@ class BaseApiController extends BaseController
{
$data = $this->filter($data, $query['query']);
}
if (isset($query['limit']))
{
$data = $data->limit(intval($query['limit']), intval($query['offset'] ?? 0));
}
if (isset($query['order']))
{
$data = $data->orderBy($query['order']);
$parts = explode(':', $query['order']);
if (count($parts) == 1)
{
$data = $data->orderBy($parts[0]);
}
else
{
if ($parts[1] != 'asc' && $parts[1] != 'desc')
{
throw new \Exception('Invalid sort order ' . $parts[1]);
}
$data = $data->orderBy($parts[0], $parts[1]);
}
}
return $data;
}