Coverage for src/qdrant_loader/connectors/confluence/mappers.py: 100%
27 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:05 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:05 +0000
1from __future__ import annotations
3from typing import Any
6def extract_hierarchy_info(content: dict[str, Any]) -> dict[str, Any]:
7 hierarchy_info = {
8 "ancestors": [],
9 "parent_id": None,
10 "parent_title": None,
11 "children": [],
12 "depth": 0,
13 "breadcrumb": [],
14 }
16 ancestors = content.get("ancestors", [])
17 if ancestors:
18 ancestor_chain = []
19 breadcrumb = []
20 for ancestor in ancestors:
21 ancestor_info = {
22 "id": ancestor.get("id"),
23 "title": ancestor.get("title"),
24 "type": ancestor.get("type", "page"),
25 }
26 ancestor_chain.append(ancestor_info)
27 breadcrumb.append(ancestor.get("title", "Unknown"))
28 hierarchy_info["ancestors"] = ancestor_chain
29 hierarchy_info["breadcrumb"] = breadcrumb
30 hierarchy_info["depth"] = len(ancestor_chain)
31 if ancestor_chain:
32 immediate_parent = ancestor_chain[-1]
33 hierarchy_info["parent_id"] = immediate_parent["id"]
34 hierarchy_info["parent_title"] = immediate_parent["title"]
36 children_data = content.get("children", {})
37 if "page" in children_data:
38 child_pages = children_data["page"].get("results", [])
39 children_info = []
40 for child in child_pages:
41 children_info.append(
42 {
43 "id": child.get("id"),
44 "title": child.get("title"),
45 "type": child.get("type", "page"),
46 }
47 )
48 hierarchy_info["children"] = children_info
50 return hierarchy_info