Differential D20308 Diff 48505 src/applications/project/engineextension/PhabricatorProjectTriggerUsageIndexEngineExtension.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/engineextension/PhabricatorProjectTriggerUsageIndexEngineExtension.php
- This file was added.
| <?php | |||||
| final class PhabricatorProjectTriggerUsageIndexEngineExtension | |||||
| extends PhabricatorIndexEngineExtension { | |||||
| const EXTENSIONKEY = 'trigger.usage'; | |||||
| public function getExtensionName() { | |||||
| return pht('Trigger Usage'); | |||||
| } | |||||
| public function shouldIndexObject($object) { | |||||
| if (!($object instanceof PhabricatorProjectTrigger)) { | |||||
| return false; | |||||
| } | |||||
| return true; | |||||
| } | |||||
| public function indexObject( | |||||
| PhabricatorIndexEngine $engine, | |||||
| $object) { | |||||
| $usage_table = new PhabricatorProjectTriggerUsage(); | |||||
| $column_table = new PhabricatorProjectColumn(); | |||||
| $conn_w = $object->establishConnection('w'); | |||||
| $active_statuses = array( | |||||
| PhabricatorProjectColumn::STATUS_ACTIVE, | |||||
| ); | |||||
| // Select summary information to populate the usage index. When picking | |||||
| // an "examplePHID", we try to pick an active column. | |||||
| $row = queryfx_one( | |||||
| $conn_w, | |||||
| 'SELECT phid, COUNT(*) N, SUM(IF(status IN (%Ls), 1, 0)) M FROM %R | |||||
| WHERE triggerPHID = %s | |||||
| ORDER BY IF(status IN (%Ls), 1, 0) DESC, id ASC', | |||||
| $active_statuses, | |||||
| $column_table, | |||||
| $object->getPHID(), | |||||
| $active_statuses); | |||||
| if ($row) { | |||||
| $example_phid = $row['phid']; | |||||
| $column_count = $row['N']; | |||||
| $active_count = $row['M']; | |||||
| } else { | |||||
| $example_phid = null; | |||||
| $column_count = 0; | |||||
| $active_count = 0; | |||||
| } | |||||
| queryfx( | |||||
| $conn_w, | |||||
| 'INSERT INTO %R (triggerPHID, examplePHID, columnCount, activeColumnCount) | |||||
| VALUES (%s, %ns, %d, %d) | |||||
| ON DUPLICATE KEY UPDATE | |||||
| examplePHID = VALUES(examplePHID), | |||||
| columnCount = VALUES(columnCount), | |||||
| activeColumnCount = VALUES(activeColumnCount)', | |||||
| $usage_table, | |||||
| $object->getPHID(), | |||||
| $example_phid, | |||||
| $column_count, | |||||
| $active_count); | |||||
| } | |||||
| } | |||||