mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-18 12:52:42 +01:00
1a091e5260
Summary: Ref T8441. Ref T7715. Ref T7909. Clean up all the ordering and grouping hacks in Maniphest so we can drive it through normal infrastructure, move it to SearchField, introduce Spaces, and eventually modernize the Conduit API. Test Plan: - Executed all grouping/ordering queries, including custom queries. - Forced execution with old aliases; got modern results. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T7909, T7715, T8441 Differential Revision: https://secure.phabricator.com/D13197
82 lines
2.3 KiB
PHP
82 lines
2.3 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');
|
|
if (!$repository_ids) {
|
|
return;
|
|
}
|
|
|
|
$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 = nonempty($symbol_index_projects, '[]');
|
|
try {
|
|
$symbol_index_projects = phutil_json_decode($symbol_index_projects);
|
|
} catch (PhutilJSONParserException $ex) {
|
|
continue;
|
|
}
|
|
|
|
$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 = nonempty($languages, '[]');
|
|
try {
|
|
$languages = phutil_json_decode($languages);
|
|
} catch (PhutilJSONParserException $ex) {
|
|
continue;
|
|
}
|
|
|
|
$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());
|
|
}
|