3 final class PhabricatorProjectTriggerUsageIndexEngineExtension
4 extends PhabricatorIndexEngineExtension
{
6 const EXTENSIONKEY
= 'trigger.usage';
8 public function getExtensionName() {
9 return pht('Trigger Usage');
12 public function shouldIndexObject($object) {
13 if (!($object instanceof PhabricatorProjectTrigger
)) {
20 public function indexObject(
21 PhabricatorIndexEngine
$engine,
24 $usage_table = new PhabricatorProjectTriggerUsage();
25 $column_table = new PhabricatorProjectColumn();
27 $conn_w = $object->establishConnection('w');
29 $active_statuses = array(
30 PhabricatorProjectColumn
::STATUS_ACTIVE
,
33 // Select summary information to populate the usage index. When picking
34 // an "examplePHID", we try to pick an active column.
37 'SELECT phid, COUNT(*) N, SUM(IF(status IN (%Ls), 1, 0)) M FROM %R
38 WHERE triggerPHID = %s
39 ORDER BY IF(status IN (%Ls), 1, 0) DESC, id ASC',
45 $example_phid = $row['phid'];
46 $column_count = $row['N'];
47 $active_count = $row['M'];
56 'INSERT INTO %R (triggerPHID, examplePHID, columnCount, activeColumnCount)
57 VALUES (%s, %ns, %d, %d)
58 ON DUPLICATE KEY UPDATE
59 examplePHID = VALUES(examplePHID),
60 columnCount = VALUES(columnCount),
61 activeColumnCount = VALUES(activeColumnCount)',