loadGraph deserializes the knowledge graph from storage.
()
| 112 | |
| 113 | // loadGraph deserializes the knowledge graph from storage. |
| 114 | func (k knowledgeBase) loadGraph() (KnowledgeGraph, error) { |
| 115 | data, err := k.s.Read() |
| 116 | if err != nil { |
| 117 | return KnowledgeGraph{}, fmt.Errorf("failed to read from store: %w", err) |
| 118 | } |
| 119 | |
| 120 | if len(data) == 0 { |
| 121 | return KnowledgeGraph{}, nil |
| 122 | } |
| 123 | |
| 124 | var items []kbItem |
| 125 | if err := json.Unmarshal(data, &items); err != nil { |
| 126 | return KnowledgeGraph{}, fmt.Errorf("failed to unmarshal from store: %w", err) |
| 127 | } |
| 128 | |
| 129 | graph := KnowledgeGraph{} |
| 130 | |
| 131 | for _, item := range items { |
| 132 | switch item.Type { |
| 133 | case "entity": |
| 134 | graph.Entities = append(graph.Entities, Entity{ |
| 135 | Name: item.Name, |
| 136 | EntityType: item.EntityType, |
| 137 | Observations: item.Observations, |
| 138 | }) |
| 139 | case "relation": |
| 140 | graph.Relations = append(graph.Relations, Relation{ |
| 141 | From: item.From, |
| 142 | To: item.To, |
| 143 | RelationType: item.RelationType, |
| 144 | }) |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | return graph, nil |
| 149 | } |
| 150 | |
| 151 | // saveGraph serializes and persists the knowledge graph to storage. |
| 152 | func (k knowledgeBase) saveGraph(graph KnowledgeGraph) error { |