]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Add jobids parameter to objects endpoint
authorMarcin Haba <marcin.haba@bacula.pl>
Wed, 2 Nov 2022 09:50:30 +0000 (10:50 +0100)
committerMarcin Haba <marcin.haba@bacula.pl>
Thu, 17 Nov 2022 09:05:10 +0000 (10:05 +0100)
gui/baculum/protected/API/Modules/Database.php
gui/baculum/protected/API/Pages/API/Objects.php
gui/baculum/protected/API/openapi_baculum.json

index 4c0883c82f679c081c294ea87bfee852347cdfc6..d216b45c24e4e9eff3d9ae0b956877e07814a1f2 100644 (file)
@@ -167,9 +167,20 @@ class Database extends APIModule {
                                $vals = array();
                                $kval = str_replace('.', '_', $key);
                                if (is_array($value['vals'])) {
-                                       for ($i = 0; $i < count($value['vals']); $i++) {
-                                               $cond[] = "{$key} = :{$kval}{$i}";
-                                               $vals[":{$kval}{$i}"] = $value['vals'][$i];
+                                       if ($value['operator'] == 'IN') {
+                                               // IN operator is treated separately
+                                               $tcond = [];
+                                               for ($i = 0; $i < count($value['vals']); $i++) {
+                                                       $tcond[] = ":{$kval}{$i}";
+                                                       $vals[":{$kval}{$i}"] = $value['vals'][$i];
+                                               }
+                                               $cond[] = "{$key} {$value['operator']} (" . implode(',', $tcond) . ')';
+                                       } else {
+                                               // other operators
+                                               for ($i = 0; $i < count($value['vals']); $i++) {
+                                                       $cond[] = "{$key} = :{$kval}{$i}";
+                                                       $vals[":{$kval}{$i}"] = $value['vals'][$i];
+                                               }
                                        }
                                } else {
                                        $cond[] = "$key = :$kval";
index b8ecc8fb771a7f988663a261be7506fd93b134bf..bb9f52d2962ea186e5eee56bc15020c5aec02296 100644 (file)
@@ -41,6 +41,7 @@ class Objects extends BaculumAPIServer {
                $objectuuid = $this->Request->contains('objectuuid') && $misc->isValidName($this->Request['objectuuid']) ? $this->Request['objectuuid'] : null;
                $objectstatus = $this->Request->contains('objectstatus') && $misc->isValidState($this->Request['objectstatus']) ? $this->Request['objectstatus'] : null;
                $jobname = $this->Request->contains('jobname') && $misc->isValidName($this->Request['jobname']) ? $this->Request['jobname'] : null;
+               $jobids = $this->Request->contains('jobids') && $misc->isValidIdsList($this->Request['jobids']) ? explode(',', $this->Request['jobids']) : [];
 
                $params = [];
                if (!empty($objecttype)) {
@@ -71,6 +72,11 @@ class Objects extends BaculumAPIServer {
                        $params['Job.Name']['operator'] = '';
                        $params['Job.Name']['vals'] = $jobname;
                }
+               if (count($jobids) > 0) {
+                       $params['Job.JobId']['operator'] = 'IN';
+                       $params['Job.JobId']['vals'] = $jobids;
+               }
+
                $objects = $this->getModule('object')->getObjects($params, $limit);
                $this->output = $objects;
                $this->error = ObjectError::ERROR_NO_ERRORS;
index e4c6db3b7e56d8ba17b5d9380f9ebd1e6fa8f1f6..8ebc15a42cd097f14a539c09c5b55a31ea26915d 100644 (file)
                                                "schema": {
                                                        "type": "string"
                                                }
+                                       },
+                                       {
+                                               "name": "jobids",
+                                               "in": "query",
+                                               "required": false,
+                                               "description": "Job identifiers (comma separated)",
+                                               "schema": {
+                                                       "type": "string"
+                                               }
                                        }
                                ]
                        }