Skip to content

feat(server): nested book components

Duncan Bennett requested to merge 1559-feat-nested-book-components into develop

feat(server): nested book components

Removes default sort order from "searchedBookComponents".

Adds loader for loading all BookComponents in a Division:

  • ctx.loaders.BookComponent.inDivisions (not used so maybe delete)

Adds helper function "loadObjectAndCousins" which encapsulates the logic of:

  • Preloading all children of a BookComponents siblings (because they will definitely be visited in the currenc request).
  • Fetching the children for the current BookComponent.

Encapsulates the common logic for fetching multiple children for multiple BookComponents in "server.models.util.mapResultsToInputIds". Adds dataloaders which call "mapResultsToInputIds":

  • "ctx.loaders.Issue.forBookComponents"
  • "ctx.loaders.Team.forBookComponents"
  • "ctx.loaders.file.sourceForBookComponents"
  • "ctx.loaders.file.convertedForBookComponents"

Refactors "book.graphql":

  • Removes misplaced arguments from "getBook" and moves them to where they belong.
  • Adds "divisionLabels" argument to "Book.bookComponents" and "Book.divisions".

Refactors "book.resolvers.js":

  • Removes "divisions" database query from "getBook".
  • Adds "Book.divisions" resolver which handles "divisionLabels" argument.
  • Adds "divisionLabels" argument and handling to "Book.bookComponents" resolver.

Refactors "division.graphql":

  • Adds "input: SearchModelInput" argument to "Division.bookComponents".
  • Changes "Division.bookComponents" return type to "BookComponentOutput!".
  • Support for these changes has not been implemented yet. When it is, Division.bookComponents should share the logic used by "searchedBookComponents".

Implements paginated resolvers for:

  • Division.bookComponents
  • BookComponent.bookComponents

Implements common logic for the above resolvers:

  • paginatedBookComponents

Adds "results[].activeSiblingIds" to "paginatedBookComponents.results". This is used to preload all issues relating to a BookComponent's immediate children (allows a child to preload its cousins). "results[].activeSiblingIds" will only contain BookComponent ids for BookComponents included in the current page.

Related to #1559 (closed)

Merge request reports