Page MenuHomePhabricator

Move board relationships to dedicated storage
ClosedPublic

Authored by epriestley on Aug 5 2014, 11:08 PM.
Tags
None
Referenced Files
F13097263: D10160.id24463.diff
Thu, Apr 25, 10:20 PM
F13097262: D10160.id24442.diff
Thu, Apr 25, 10:20 PM
Unknown Object (File)
Sat, Apr 13, 11:41 AM
Unknown Object (File)
Thu, Apr 11, 12:39 AM
Unknown Object (File)
Feb 16 2024, 7:08 PM
Unknown Object (File)
Feb 4 2024, 9:26 AM
Unknown Object (File)
Feb 4 2024, 9:25 AM
Unknown Object (File)
Feb 3 2024, 12:21 AM
Subscribers
Tokens
"Like" token, awarded by hach-que."Orange Medal" token, awarded by chad.

Details

Summary

Fixes T5476. Using edges to store which objects are on which board columns ends up being pretty awkward. In particular, it makes T4807 very difficult to implement.

Introduce a dedicated BoardColumnPosition storage.

This doesn't affect ordering rules (T4807) yet: boards are still arranged by priority. We just read which tasks are on which columns out of a new table.

Test Plan
  • Migrated data, then viewed some boards. Saw exactly the same data.
  • Dragged tasks from column to column.
  • Created a task directly into a column.

Diff Detail

Repository
rP Phabricator
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

epriestley retitled this revision from to Move board relationships to dedicated storage.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: btrahan.

A note on naming: I'm possibly anticipating a future where boards are on objects other than projects (e.g., maybe user boards?) and things other than tasks are on boards (e.g., revisions on a board?). I'm not sure we'll ever get there, but that's why the "board object" is called boardPHID (generic) instead of projectPHID (specific), and why the "card object" is called objectPHID instead of taskPHID.

In practice, the boardPHID is always a project PHID for now, and the objectPHID is always a task PHID.

src/applications/maniphest/controller/ManiphestTaskEditController.php
378–401

I moved the "select tasks not on any column as though they were part of the default column" logic into the Query, which makes this a lot simpler.

src/applications/project/query/PhabricatorProjectColumnPositionQuery.php
97

This block is implementing the "find stuff not in any column yet" logic, just in a more general way.

btrahan edited edge metadata.

I'd answer the inline I left as "yes" after looking through the rest of the code. :P

Scores of people are going to be very pleased soon.

resources/sql/autopatches/20140805.boardcol.1.sql
2

so maybe in the future we'll have

($NAMESPACE}_maniphest.task_columnposition

etc instances of this table like the edge framework...?

This revision is now accepted and ready to land.Aug 6 2014, 12:40 AM
resources/sql/autopatches/20140805.boardcol.1.sql
2

Yeah -- I don't really have specific plan to pursue this yet, but it doesn't seem totally implausible.

epriestley updated this revision to Diff 24463.

Closed by commit rP09868271bdce (authored by @epriestley).