Spike: Establish backend tasks to support Epic dependencies
This issue is to scope out the engineering steps to deliver &2581 (closed). The expected outcome is a list of tasks that are estimated for capacity and will deliver a first iteration.
What we will build
- An exact replica of the current related issue widget, allowing epics to be related to each other.
- The ability to define the relationship as related, blocking or blocked-by.
- See #202431 (closed).
Additional Requirements
- As close as possible to the issues widget in design, as they will be merged into one when Epics become a Work Item type.
- Just as with issues, epics from different groups and hierarchies can be related by those who can interact with both. The user only sees what they have access to.
❓ Things to clarify
-
✅ Tier for this feature -
✅ Solely REST in the first iteration or including GraphQL support (See slack thread (internal))- We can use solely Rest for an MVC (see #351597 (comment 836258525))
-
✅ Internal vs Public API- We will start with internal API plus one public endpoint to list related epics. (See #351597 (comment 832411238))
-
✅ Records storage - DB table name - columns needed - Model name.- Proposal to use
related_epic_links
name for table andEpic::RelatedEpicLink
for model. - For columns we need 1-1 mapping of attributes/functionality with
issue_links
. - See See #351597 (comment 835799403) for details
- Proposal to use
-
✅ Backend services needed- Add new
ListService
,CreateService
andDestroyService
that inherit fromIssuableLinks
. (See #351597 (comment 835800236))
- Add new
-
✅ Permissions performance impact- We need to check permissions for every epic but should not be too costly given the limited amount of related epics
- We would get unavoidable
N+1
queries forSELECT "saml_providers"...
- See #351597 (comment 835834914) for details
📋 Tasks
- Allow an epic to be marked as
Related to
,blocking
orblocked by
other Epics.
- Add a new table to store epic links #352437 (closed)
- Define permissions to create and view related epics #352439 (closed)
- Allow to view, create, and delete related epics
- Add ability to query related epics of an epic #352495 (closed)
- Add services to support epic dependencies #352486 (closed)
- Add internal API endpoints to list, create, and delete related epics #352833 (closed)
- Add REST API endpoint to list related epics #352493 (closed)
- Add REST API endpoint to create and delete related epics #352840 (closed)
Edited by Eugenia Grieff