]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
baculum: Add offset parameter to storage and client list endpoint
authorMarcin Haba <marcin.haba@bacula.pl>
Thu, 22 Dec 2022 11:49:24 +0000 (12:49 +0100)
committerMarcin Haba <marcin.haba@bacula.pl>
Mon, 9 Jan 2023 12:34:42 +0000 (13:34 +0100)
gui/baculum/protected/API/Modules/ClientManager.php
gui/baculum/protected/API/Modules/StorageManager.php
gui/baculum/protected/API/Pages/API/Clients.php
gui/baculum/protected/API/Pages/API/Storages.php
gui/baculum/protected/API/openapi_baculum.json

index 88f8d7d30c3e8367000ef85a149ae7032a567646..f2608a24a9821dab0c57afd56576151c5660b5d2 100644 (file)
@@ -33,10 +33,13 @@ use Prado\Data\ActiveRecord\TActiveRecordCriteria;
  */
 class ClientManager extends APIModule {
 
-       public function getClients($limit) {
+       public function getClients($limit_val = 0, $offset_val = 0) {
                $criteria = new TActiveRecordCriteria;
-               if(is_numeric($limit) && $limit > 0) {
-                       $criteria->Limit = $limit;
+               if(is_numeric($limit_val) && $limit_val > 0) {
+                       $criteria->Limit = $limit_val;
+               }
+               if (is_int($offset_val) && $offset_val > 0) {
+                       $criteria->Offset = $offset_val;
                }
                return ClientRecord::finder()->findAll($criteria);
        }
index 217073afb24bdfc07ab6fb3d2999801d51eb7e23..6d61907fd85fd84263775fd8a05f6753ae281518 100644 (file)
@@ -33,10 +33,13 @@ use Prado\Data\ActiveRecord\TActiveRecordCriteria;
  */
 class StorageManager extends APIModule {
 
-       public function getStorages($limit) {
+       public function getStorages($limit_val = 0, $offset_val = 0) {
                $criteria = new TActiveRecordCriteria;
-               if(is_int($limit) && $limit > 0) {
-                       $criteria->Limit = $limit;
+               if(is_int($limit_val) && $limit_val > 0) {
+                       $criteria->Limit = $limit_val;
+               }
+               if (is_int($offset_val) && $offset_val > 0) {
+                       $criteria->Offset = $offset_val;
                }
                return StorageRecord::finder()->findAll($criteria);
        }
index fe65726e97a378947a19266f95dbf3d06d4ccd53..a11d25c5165facb31eee9ad68219f0d93cf06976 100644 (file)
@@ -33,10 +33,12 @@ use Baculum\Common\Modules\Errors\ClientError;
 class Clients extends BaculumAPIServer {
 
        public function get() {
+               $misc = $this->getModule('misc');
                $limit = $this->Request->contains('limit') ? intval($this->Request['limit']) : 0;
+               $offset = $this->Request->contains('offset') && $misc->isValidInteger($this->Request['offset']) ? (int)$this->Request['offset'] : 0;
                $result = $this->getModule('bconsole')->bconsoleCommand($this->director, array('.client'));
                if ($result->exitcode === 0) {
-                       $clients = $this->getModule('client')->getClients($limit);
+                       $clients = $this->getModule('client')->getClients($limit, $offset);
                        array_shift($result->output);
                        $clients_output = array();
                        foreach($clients as $client) {
index 5ea64692a79f62f309d19d8b2542f3ad5973578f..cb4b059e0ba3d69f870fd92e7622b9eb28448ddf 100644 (file)
@@ -33,8 +33,10 @@ use Baculum\Common\Modules\Errors\StorageError;
 class Storages extends BaculumAPIServer {
 
        public function get() {
+               $misc = $this->getModule('misc');
                $limit = $this->Request->contains('limit') ? intval($this->Request['limit']) : 0;
-               $storages = $this->getModule('storage')->getStorages($limit);
+               $offset = $this->Request->contains('offset') && $misc->isValidInteger($this->Request['offset']) ? (int)$this->Request['offset'] : 0;
+               $storages = $this->getModule('storage')->getStorages($limit, $offset);
                $result = $this->getModule('bconsole')->bconsoleCommand(
                        $this->director,
                        array('.storage')
index 67c644d2344041df053236066551f28673fb392b..8a3dff595b2cd6aa79ed7c8cd96a886ca87215f0 100644 (file)
                                                }
                                        }
                                },
-                               "parameters": [{
-                                       "$ref": "#/components/parameters/Limit"
-                               }]
+                               "parameters": [
+                                       {
+                                               "$ref": "#/components/parameters/Limit"
+                                       },
+                                       {
+                                               "$ref": "#/components/parameters/Offset"
+                                       }
+                               ]
                        }
                },
                "/api/v2/clients/{clientid}": {
                                                }
                                        }
                                },
-                               "parameters": [{
-                                       "$ref": "#/components/parameters/Limit"
-                               }]
+                               "parameters": [
+                                       {
+                                               "$ref": "#/components/parameters/Limit"
+                                       },
+                                       {
+                                               "$ref": "#/components/parameters/Offset"
+                                       }
+                               ]
                        }
                },
                "/api/v2/storages/{storageid}": {