async def save_edge(self, edge): """ Save an edge to the db. :param goblin.element.Edge element: Edge to be saved :returns: :py:class:`Edge<goblin.element.Edge>` object """ if not (hasattr(edge, 'source') and hasattr(edge, 'target')): raise exception.ElementError( "Edges require both source/target vertices") result = await self._save_element(edge, self._check_edge, self._add_edge, self._update_edge) hashable_id = self._get_hashable_id(result.id) self.current[hashable_id] = result return result
async def save(self, elem): """ Save an element to the db. :param goblin.element.Element element: Vertex or Edge to be saved :returns: :py:class:`Element<goblin.element.Element>` object """ if elem.__type__ == 'vertex': result = await self.save_vertex(elem) elif elem.__type__ == 'edge': result = await self.save_edge(elem) else: raise exception.ElementError("Unknown element type: {}".format( elem.__type__)) return result
def __get__(self, obj, objtype=None): if obj is None: raise exception.ElementError( "Only instantiated elements have ID property") return obj._id