1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-19 20:10:55 +01:00
phorge-phorge/resources/sql/autopatches/20150504.symbolsproject.1.php
Aviv Eyal 898ce6bace Search Symbols by Repository, not Project
Summary:
Fixes T7977.
- Move Indexed Languages and See Symbols From config to Repository
- Make symbol search skip projects

This also makes the default languages to Everything instead of Nothing.

Test Plan:
- Browse files, click symbols.
- Use quick search to find symbols
- Browse revision, click symbols

Reviewers: joshuaspence, epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, epriestley

Maniphest Tasks: T7977

Differential Revision: https://secure.phabricator.com/D12687
2015-05-18 06:41:19 -07:00

68 lines
2 KiB
PHP

<?php
$table_w = new PhabricatorRepository();
$conn_w = $table_w->establishConnection('w');
// Repository and Project share a database.
$conn_r = $table_w->establishConnection('r');
$projects_table = 'repository_arcanistproject';
$raw_projects_data = queryfx_all($conn_r, 'SELECT * FROM %T', $projects_table);
$raw_projects_data = ipull($raw_projects_data, null, 'id');
$repository_ids = ipull($raw_projects_data, 'repositoryID');
$repositories = id(new PhabricatorRepositoryQuery())
->setViewer(PhabricatorUser::getOmnipotentUser())
->withIDs($repository_ids)
->execute();
$projects_to_repo_ids_map = ipull($raw_projects_data, 'repositoryID', 'phid');
$projects_to_repos_map = array();
foreach ($projects_to_repo_ids_map as $projectPHID => $repositoryID) {
$repo = idx($repositories, $repositoryID);
if ($repo) {
$projects_to_repos_map[$projectPHID] = $repo->getPHID();
}
}
foreach ($raw_projects_data as $project_row) {
$repositoryID = idx($project_row, 'repositoryID');
$repo = idx($repositories, $repositoryID);
if (!$repo) {
continue;
}
echo pht(
"Migrating symbols configuration for '%s' project...\n",
idx($project_row, 'name', '???'));
$symbol_index_projects = $project_row['symbolIndexProjects'];
$symbol_index_projects = phutil_json_decode($symbol_index_projects);
$sources = $repo->getDetail('symbol-sources', array());
foreach ($symbol_index_projects as $index_project) {
$sources[] = idx($projects_to_repos_map, $index_project);
}
$sources = array_filter($sources);
$sources = array_unique($sources);
$repo->setDetail('symbol-sources', $sources);
$languages = $project_row['symbolIndexLanguages'];
$languages = phutil_json_decode($languages);
$languages = array_merge(
$repo->getDetail('symbol-languages', array()),
$languages);
$languages = array_unique($languages);
$repo->setDetail('symbol-languages', $languages);
queryfx(
$conn_w,
'UPDATE %T SET details = %s WHERE id = %d',
$table_w->getTableName(),
json_encode($repo->getDetails()),
$repo->getID());
}