Skip to content

Allow specifying depth of ITopicRepository.Load() #120

Description

@JeremyCaney

Replace the isRecursive: bool parameter on ITopicRepository.Load() with depth: int, because hierarchical navigation (e.g., rendering a navigation menu from a root several tiers deep) needs precise control over how much of the tree to pull. A full recursive load of the root would force the whole graph to load, defeating the purpose of lazy loading, so the goal is load exactly the region of the graph needed.

Tasks

  • C# API (depth replaces isRecursive across Load() and IsLoaded() stub modeling, tests)
  • SQL @Depth parameter on LoadTopics stored procedure w/ recursive CTE
    • This replaces existing @LoadDescendants and @LoadChildren parameters
  • Allow CachedTopicRepository's existing "sufficiency gate" (i.e., ConvergeLoadState() to be depth-aware
  • Sequentialize the HierarchicalTopicMappingService child crawl
    • This fixes the nondeterministic menu ordering and unsynchronized modification of the graph
  • Make IsVisible()'s IsHidden and IsDisabled checks non-autoloading
    • These currently trigger unnecessary loading of ExtendedAttributes and references tree traversal

Metadata

Metadata

Assignees

Labels

Area: RepositoriesRelates to the `ITopicRepository` interface or one of its implementations.Priority: 2Severity 2: MajorStatus 5: CompleteTask is considered complete, and ready for deployment.Type: BugBehavior that is inconsistent with documented or expected behavior.Type: ImprovementImproves the functionality or interface of an existing feature.

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions