Adds new Node or returns the existing one :param node_class: Model in current node :type node_class: ormar.models.metaclass.ModelMetaclass :param relation_name: name of the current relation :type relation_name: str :param parent_node: parent node
(
self,
node_class: type["RelationMixin"],
relation_name: Optional[str] = None,
parent_node: Optional["Node"] = None,
)
| 16 | return self.node_list.__getitem__(item) |
| 17 | |
| 18 | def add( |
| 19 | self, |
| 20 | node_class: type["RelationMixin"], |
| 21 | relation_name: Optional[str] = None, |
| 22 | parent_node: Optional["Node"] = None, |
| 23 | ) -> "Node": |
| 24 | """ |
| 25 | Adds new Node or returns the existing one |
| 26 | |
| 27 | :param node_class: Model in current node |
| 28 | :type node_class: ormar.models.metaclass.ModelMetaclass |
| 29 | :param relation_name: name of the current relation |
| 30 | :type relation_name: str |
| 31 | :param parent_node: parent node |
| 32 | :type parent_node: Optional[Node] |
| 33 | :return: returns new or already existing node |
| 34 | :rtype: Node |
| 35 | """ |
| 36 | existing_node = self.find( |
| 37 | relation_name=relation_name, node_class=node_class, parent_node=parent_node |
| 38 | ) |
| 39 | if not existing_node: |
| 40 | current_node = Node( |
| 41 | node_class=node_class, |
| 42 | relation_name=relation_name, |
| 43 | parent_node=parent_node, |
| 44 | ) |
| 45 | self.node_list.append(current_node) |
| 46 | return current_node |
| 47 | return existing_node # pragma: no cover |
| 48 | |
| 49 | def find( |
| 50 | self, |
no test coverage detected