Allow Maniphest tasks to be filtered by Project

Summary:
Major things taking place here:

  - A new table for storing <task, project> relationships.
  - Moved all task query logic into a dedicated class.
  - Added a "projects" filter to the UI.

I was originally going to try to drive this off the main search index but the
perf benefits of a custom schema make an overwhelming argument in favor of doing
it this way.

Test Plan:
Filtered tasks by author and owner and zero, one, and more than one project.
Exercised all the group/sort options. Ran the index script over my 100k task
corpus. Edited task-project membership and verified the index updated.

Reviewed By: cadamo
Reviewers: gc3, jungejason, cadamo, tuomaspelkonen, aran
CC: aran, cadamo, epriestley
Differential Revision: 556
This commit is contained in:
epriestley
2011-06-29 16:16:33 -07:00
parent 6a3eb19876
commit de0c89261e
12 changed files with 610 additions and 133 deletions

View File

@@ -0,0 +1,6 @@
CREATE TABLE phabricator_maniphest.maniphest_taskproject (
taskPHID varchar(64) BINARY NOT NULL,
projectPHID varchar(64) BINARY NOT NULL,
PRIMARY KEY (projectPHID, taskPHID),
UNIQUE KEY (taskPHID, projectPHID)
);