Skip to content

Think about how we can express issue chains in the database #17

@sobolevn

Description

@sobolevn

We have a nested structure of issues that are attached in two possible ways:

root issue:
  - issue1
  - issue2

Which means that these two issues are in parallel.
And:

root issue:
  - issue1:
    - issue2

means that these two issues are blocked: issue2 is blocked until issue1 is resolved.

We can also have a situation when one issue is blocked by two other issues:

root issue:
  - issue1:
    - issue2:
      - issue3

We can only start to work on issue3 after both issue1 and issue2 are resolved.

It is important to understand that we can also have two or more blocks for just one issue:

root issue:
  - issue1
  - issue2
  - name: issue3
     after: [issue1, issue2]

It means that we can work on issue1 and issue2 on the same time. While issue3 can only be worked on after issue1 and issue2 are resolved.

In our django app we use:

class Issue(models.Model):
    after = models.ManyToManyField('self')

And https://django-treebeard.readthedocs.io/en/latest/ to make fast queries.
We need something similar for Elixir.

Scope:

  1. Research what tools are there for elixir
  2. Write a short document like this one: https://github.com/wemake-services/kira/blob/master/docs/decisions/0001-http-client.md
  3. Make a decision: which tools should we use

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions