3 final class PhabricatorPackagesVersionQuery
4 extends PhabricatorPackagesQuery
{
12 public function withIDs(array $ids) {
17 public function withPHIDs(array $phids) {
18 $this->phids
= $phids;
22 public function withPackagePHIDs(array $phids) {
23 $this->packagePHIDs
= $phids;
27 public function withFullKeys(array $keys) {
28 $this->fullKeys
= $keys;
32 public function withNames(array $names) {
33 $this->names
= $names;
37 public function withNameNgrams($ngrams) {
38 return $this->withNgramsConstraint(
39 new PhabricatorPackagesVersionNameNgrams(),
43 public function newResultObject() {
44 return new PhabricatorPackagesVersion();
47 protected function buildWhereClauseParts(AphrontDatabaseConnection
$conn) {
48 $where = parent
::buildWhereClauseParts($conn);
50 if ($this->ids
!== null) {
57 if ($this->phids
!== null) {
64 if ($this->packagePHIDs
!== null) {
67 'v.packagePHID IN (%Ls)',
71 if ($this->names
!== null) {
78 if ($this->fullKeys
!== null) {
79 $parts = $this->buildFullKeyClauseParts($conn, $this->fullKeys
);
80 $where[] = qsprintf($conn, '%Q', $parts);
86 protected function buildJoinClauseParts(AphrontDatabaseConnection
$conn) {
87 $joins = parent
::buildJoinClauseParts($conn);
89 $join_publisher = ($this->fullKeys
!== null);
90 $join_package = ($this->fullKeys
!== null) ||
$join_publisher;
93 $package_table = new PhabricatorPackagesPackage();
97 'JOIN %T p ON v.packagePHID = p.phid',
98 $package_table->getTableName());
101 if ($join_publisher) {
102 $publisher_table = new PhabricatorPackagesPublisher();
106 'JOIN %T u ON u.phid = p.publisherPHID',
107 $publisher_table->getTableName());
113 protected function willFilterPage(array $versions) {
114 $package_phids = mpull($versions, 'getPackagePHID');
116 $packages = id(new PhabricatorPackagesPackageQuery())
117 ->setViewer($this->getViewer())
118 ->setParentQuery($this)
119 ->withPHIDs($package_phids)
121 $packages = mpull($packages, null, 'getPHID');
123 foreach ($versions as $key => $version) {
124 $package = idx($packages, $version->getPackagePHID());
127 unset($versions[$key]);
128 $this->didRejectResult($version);
132 $version->attachPackage($package);
138 protected function getPrimaryTableAlias() {