940 Bonus: Persisting trees [2d]

Updated . Posted . Visible to the public.

Storing a tree

For each movie in MovieDB, we want to track which other movie it was inspired by. For example:

  • "Interstellar was inspired by 2001"
  • "Inception was inspired by The Matrix"

Start by adding a field Movie#inspiration_id. In the movie form, I should be able to select the inspiring movie.

The list should:

  • include all the movies that were released in previous years
  • not include the movie itself
  • not include a movie that was itself inspired by the movie that is being edited.

Traversal

In the movie show view, I want to see the "inspiration tree" of that movie.

An inspiration tree for a movie M could look like this:

stateDiagram-v2
    M: (M)
    A --> B
    B --> M
    M --> C
    M --> D
    D --> F
    D --> E

In the tree above I can see:

  • the current movie M was inspired by B
  • B was inspired by A
  • A has no recorded inspiration
  • C and D were inspired by M
  • F and E were inspired by D

Note that if an ancestor B has inspired other movies than the current movie M, we do not need to display it.

Look at your development log while opening a movie. How many queries are triggered?

Materialized path

Henning Koch
Last edit
Michael Leimstädtner
License
Source code in this card is licensed under the MIT License.
Posted by Henning Koch to makandra Curriculum (2015-09-04 15:42)