1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-23 07:12:41 +01:00

Lightly modernize LegalpadDocumentQuery

Summary: Ref T13024. Updates LegalpadDocumentQuery to use slightly more modern constructions.

Test Plan: Queried for Legalpad documents, got the same results.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13024

Differential Revision: https://secure.phabricator.com/D18785
This commit is contained in:
epriestley 2017-11-27 16:10:33 -08:00
parent 00baa3c1dd
commit 3d742eb50b

View file

@ -77,23 +77,12 @@ final class LegalpadDocumentQuery
return $this; return $this;
} }
public function newResultObject() {
return new LegalpadDocument();
}
protected function loadPage() { protected function loadPage() {
$table = new LegalpadDocument(); return $this->loadStandardPage($this->newResultObject());
$conn_r = $table->establishConnection('r');
$data = queryfx_all(
$conn_r,
'SELECT d.* FROM %T d %Q %Q %Q %Q %Q',
$table->getTableName(),
$this->buildJoinClause($conn_r),
$this->buildWhereClause($conn_r),
$this->buildGroupClause($conn_r),
$this->buildOrderClause($conn_r),
$this->buildLimitClause($conn_r));
$documents = $table->loadAllFromArray($data);
return $documents;
} }
protected function willFilterPage(array $documents) { protected function willFilterPage(array $documents) {
@ -134,12 +123,12 @@ final class LegalpadDocumentQuery
return $documents; return $documents;
} }
protected function buildJoinClause(AphrontDatabaseConnection $conn_r) { protected function buildJoinClauseParts(AphrontDatabaseConnection $conn) {
$joins = array(); $joins = parent::buildJoinClauseParts($conn);
if ($this->contributorPHIDs !== null) { if ($this->contributorPHIDs !== null) {
$joins[] = qsprintf( $joins[] = qsprintf(
$conn_r, $conn,
'JOIN edge contributor ON contributor.src = d.phid 'JOIN edge contributor ON contributor.src = d.phid
AND contributor.type = %d', AND contributor.type = %d',
PhabricatorObjectHasContributorEdgeType::EDGECONST); PhabricatorObjectHasContributorEdgeType::EDGECONST);
@ -147,79 +136,81 @@ final class LegalpadDocumentQuery
if ($this->signerPHIDs !== null) { if ($this->signerPHIDs !== null) {
$joins[] = qsprintf( $joins[] = qsprintf(
$conn_r, $conn,
'JOIN %T signer ON signer.documentPHID = d.phid 'JOIN %T signer ON signer.documentPHID = d.phid
AND signer.signerPHID IN (%Ls)', AND signer.signerPHID IN (%Ls)',
id(new LegalpadDocumentSignature())->getTableName(), id(new LegalpadDocumentSignature())->getTableName(),
$this->signerPHIDs); $this->signerPHIDs);
} }
return implode(' ', $joins); return $joins;
} }
protected function buildGroupClause(AphrontDatabaseConnection $conn_r) { protected function shouldGroupQueryResultRows() {
if ($this->contributorPHIDs || $this->signerPHIDs) { if ($this->contributorPHIDs) {
return 'GROUP BY d.id'; return true;
} else {
return '';
}
} }
protected function buildWhereClause(AphrontDatabaseConnection $conn_r) { if ($this->signerPHIDs) {
$where = array(); return true;
}
return parent::shouldGroupQueryResultRows();
}
protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {
$where = parent::buildWhereClauseParts($conn);
if ($this->ids !== null) { if ($this->ids !== null) {
$where[] = qsprintf( $where[] = qsprintf(
$conn_r, $conn,
'd.id IN (%Ld)', 'd.id IN (%Ld)',
$this->ids); $this->ids);
} }
if ($this->phids !== null) { if ($this->phids !== null) {
$where[] = qsprintf( $where[] = qsprintf(
$conn_r, $conn,
'd.phid IN (%Ls)', 'd.phid IN (%Ls)',
$this->phids); $this->phids);
} }
if ($this->creatorPHIDs !== null) { if ($this->creatorPHIDs !== null) {
$where[] = qsprintf( $where[] = qsprintf(
$conn_r, $conn,
'd.creatorPHID IN (%Ls)', 'd.creatorPHID IN (%Ls)',
$this->creatorPHIDs); $this->creatorPHIDs);
} }
if ($this->dateCreatedAfter !== null) { if ($this->dateCreatedAfter !== null) {
$where[] = qsprintf( $where[] = qsprintf(
$conn_r, $conn,
'd.dateCreated >= %d', 'd.dateCreated >= %d',
$this->dateCreatedAfter); $this->dateCreatedAfter);
} }
if ($this->dateCreatedBefore !== null) { if ($this->dateCreatedBefore !== null) {
$where[] = qsprintf( $where[] = qsprintf(
$conn_r, $conn,
'd.dateCreated <= %d', 'd.dateCreated <= %d',
$this->dateCreatedBefore); $this->dateCreatedBefore);
} }
if ($this->contributorPHIDs !== null) { if ($this->contributorPHIDs !== null) {
$where[] = qsprintf( $where[] = qsprintf(
$conn_r, $conn,
'contributor.dst IN (%Ls)', 'contributor.dst IN (%Ls)',
$this->contributorPHIDs); $this->contributorPHIDs);
} }
if ($this->signatureRequired !== null) { if ($this->signatureRequired !== null) {
$where[] = qsprintf( $where[] = qsprintf(
$conn_r, $conn,
'd.requireSignature = %d', 'd.requireSignature = %d',
$this->signatureRequired); $this->signatureRequired);
} }
$where[] = $this->buildPagingClause($conn_r); return $where;
return $this->formatWhereClause($where);
} }
private function loadDocumentBodies(array $documents) { private function loadDocumentBodies(array $documents) {
@ -275,4 +266,8 @@ final class LegalpadDocumentQuery
return 'PhabricatorLegalpadApplication'; return 'PhabricatorLegalpadApplication';
} }
protected function getPrimaryTableAlias() {
return 'd';
}
} }