diff --git a/src/applications/almanac/query/AlmanacDeviceQuery.php b/src/applications/almanac/query/AlmanacDeviceQuery.php index 29461bfbfd..0d38070e0b 100644 --- a/src/applications/almanac/query/AlmanacDeviceQuery.php +++ b/src/applications/almanac/query/AlmanacDeviceQuery.php @@ -8,6 +8,7 @@ final class AlmanacDeviceQuery private $names; private $namePrefix; private $nameSuffix; + private $isClusterDevice; public function withIDs(array $ids) { $this->ids = $ids; @@ -40,6 +41,11 @@ final class AlmanacDeviceQuery $ngrams); } + public function withIsClusterDevice($is_cluster_device) { + $this->isClusterDevice = $is_cluster_device; + return $this; + } + public function newResultObject() { return new AlmanacDevice(); } @@ -90,6 +96,13 @@ final class AlmanacDeviceQuery $this->nameSuffix); } + if ($this->isClusterDevice !== null) { + $where[] = qsprintf( + $conn, + 'device.isBoundToClusterService = %d', + (int)$this->isClusterDevice); + } + return $where; } diff --git a/src/applications/almanac/query/AlmanacDeviceSearchEngine.php b/src/applications/almanac/query/AlmanacDeviceSearchEngine.php index 6e28d7e5b8..1d0a1d8475 100644 --- a/src/applications/almanac/query/AlmanacDeviceSearchEngine.php +++ b/src/applications/almanac/query/AlmanacDeviceSearchEngine.php @@ -25,6 +25,13 @@ final class AlmanacDeviceSearchEngine ->setLabel(pht('Exact Names')) ->setKey('names') ->setDescription(pht('Search for devices with specific names.')), + id(new PhabricatorSearchThreeStateField()) + ->setLabel(pht('Cluster Device')) + ->setKey('isClusterDevice') + ->setOptions( + pht('Both Cluster and Non-cluster Devices'), + pht('Cluster Devices Only'), + pht('Non-cluster Devices Only')), ); } @@ -39,6 +46,10 @@ final class AlmanacDeviceSearchEngine $query->withNames($map['names']); } + if ($map['isClusterDevice'] !== null) { + $query->withIsClusterDevice($map['isClusterDevice']); + } + return $query; }