def delete(self) -> None: for edge in set(self.edges()): edge.delete() uid = object.__getattribute__(self, '__uid__') for key in revert.match_keys(f'{config.base}/objects/{uid}'): revert.delete(key) for cls in self.__class__.mro(): if issubclass(cls, Node): # todo: use set # todo: don't use raw revert stuff anywhere. Always use bindings revert.delete( f'{config.base}/classes/{cls.class_reference()}/objects/{uid}' ) ogm.delete_node(self)
def delete(self) -> None: actual_cls = self.__class__.class_reference() for cls in self.__class__.mro(): if issubclass(cls, Edge): revert.count_down_or_del( f'{config.base}/child_relations/{encode(self.parent)}/{cls.class_reference()}/{encode(self.child)}' ) revert.count_down_or_del( f'{config.base}/parent_relations/{encode(self.child)}/{cls.class_reference()}/{encode(self.parent)}' ) revert.delete( f'{config.base}/child_edges/{encode(self.parent)}/{encode(self.child)}/{cls.class_reference()}/{actual_cls}' ) revert.delete( f'{config.base}/parent_edges/{encode(self.child)}/{encode(self.parent)}/{cls.class_reference()}/{actual_cls}' )
def remove(self, item: TVal) -> None: revert.delete(f'{self.__binding__}/{ogm.encode(item)}') ogm.update_node(self.__instance__)
def clear(self) -> None: for key in revert.match_keys(f'{self.__binding__}'): revert.delete(key) ogm.update_node(self.__instance__)
def __delitem__(self, key: TKey) -> None: revert.delete(f'{self.__binding__}/{ogm.encode(key)}') ogm.update_node(self.__instance__)