mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-01 09:28:22 +01:00
17e83b53d5
Summary: Ref T13000. Currently, queries can only be executed from the web UI, which requires logging in as a user. I really want to avoid doing that wherever we can, but being able to execute queries on an instance (and, particularly, see the ngrams and timings on the underlying lookups) would have been helpful in several cases. Improve tooling a bit in advance of the "common ngrams" stuff going out since it seems likely that it will be useful if issues arise. Test Plan: Ran `bin/search query --query ...`, got useful minimal output. Ran with `--trace` to get internals. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13000 Differential Revision: https://secure.phabricator.com/D18690
55 lines
1.3 KiB
PHP
55 lines
1.3 KiB
PHP
<?php
|
|
|
|
final class PhabricatorSearchManagementQueryWorkflow
|
|
extends PhabricatorSearchManagementWorkflow {
|
|
|
|
protected function didConstruct() {
|
|
$this
|
|
->setName('query')
|
|
->setSynopsis(
|
|
pht('Run a search query. Intended for debugging and development.'))
|
|
->setArguments(
|
|
array(
|
|
array(
|
|
'name' => 'query',
|
|
'param' => 'query',
|
|
'help' => pht('Raw query to execute.'),
|
|
),
|
|
));
|
|
}
|
|
|
|
public function execute(PhutilArgumentParser $args) {
|
|
$viewer = $this->getViewer();
|
|
$raw_query = $args->getArg('query');
|
|
if (!strlen($raw_query)) {
|
|
throw new PhutilArgumentUsageException(
|
|
pht('Specify a query with --query.'));
|
|
}
|
|
|
|
$engine = id(new PhabricatorSearchApplicationSearchEngine())
|
|
->setViewer($viewer);
|
|
|
|
$saved = $engine->newSavedQuery();
|
|
$saved->setParameter('query', $raw_query);
|
|
|
|
$query = $engine->buildQueryFromSavedQuery($saved);
|
|
$pager = $engine->newPagerForSavedQuery($saved);
|
|
|
|
$results = $engine->executeQuery($query, $pager);
|
|
if ($results) {
|
|
foreach ($results as $result) {
|
|
echo tsprintf(
|
|
"%s\t%s\n",
|
|
$result->getPHID(),
|
|
$result->getName());
|
|
}
|
|
} else {
|
|
echo tsprintf(
|
|
"%s\n",
|
|
pht('No results.'));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
}
|