def test_get_node_params(self): """Test get node params.""" db = DB() root = db.add_root('val1') db.add_to_parent(root, 'val2', is_deleted=True) params = db.get_node_params(1) assert params.db_id == 1 assert params.value == 'val2' assert params.is_deleted is True
def load(self, db_id: int, db: DB): """Load node from db.""" # node already loaded if db_id in self.db_nodes: return # create node copy new_node_params = db.get_node_params(db_id) cache_id = self._cache_index self._cache_index += 1 new_node = CNode( cache_id=cache_id, node_params=new_node_params, ) self.db_nodes[new_node_params.db_id] = new_node self.cache_nodes[cache_id] = new_node # restore node connections adoptees = [] for orphan in self.orphans: is_child = db.is_child(orphan, db_id) if is_child: child = self.db_nodes[orphan] new_node.append_child(child) adoptees.append(orphan) self.orphans -= set(adoptees) # restore parent and is_deleted attribute # if parent deleted node should be deleted to parent_id = db.get_parent_id(db_id) if parent_id in self.db_nodes: parent = self.db_nodes[parent_id] parent.append_child(new_node) self.orphans.discard(db_id) if parent.is_deleted: new_node.delete() else: self.orphans.add(db_id)