From: Marcin Haba Date: Wed, 2 Nov 2022 09:50:30 +0000 (+0100) Subject: Add jobids parameter to objects endpoint X-Git-Tag: Release-13.0.2~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a68d1bb429c938376f0e4a8b609119dd3ad92d4f;p=thirdparty%2Fbacula.git Add jobids parameter to objects endpoint --- diff --git a/gui/baculum/protected/API/Modules/Database.php b/gui/baculum/protected/API/Modules/Database.php index 4c0883c82..d216b45c2 100644 --- a/gui/baculum/protected/API/Modules/Database.php +++ b/gui/baculum/protected/API/Modules/Database.php @@ -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"; diff --git a/gui/baculum/protected/API/Pages/API/Objects.php b/gui/baculum/protected/API/Pages/API/Objects.php index b8ecc8fb7..bb9f52d29 100644 --- a/gui/baculum/protected/API/Pages/API/Objects.php +++ b/gui/baculum/protected/API/Pages/API/Objects.php @@ -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; diff --git a/gui/baculum/protected/API/openapi_baculum.json b/gui/baculum/protected/API/openapi_baculum.json index e4c6db3b7..8ebc15a42 100644 --- a/gui/baculum/protected/API/openapi_baculum.json +++ b/gui/baculum/protected/API/openapi_baculum.json @@ -6255,6 +6255,15 @@ "schema": { "type": "string" } + }, + { + "name": "jobids", + "in": "query", + "required": false, + "description": "Job identifiers (comma separated)", + "schema": { + "type": "string" + } } ] }