Adds an edge between the specified nodes of the graph.

        Arguments:
            source (Node): The source node of the edge to add.
            target (Node): The target node of the edge to add.
            weight (float): The weight of the edge.
            save_to_cache (bool): Whether the edge should be saved to the local database. This
                                  argument is necessary (and `False`) when we load edges from
                                  the local cache.

def add_edge(self, source: Node,
                 target: Node,
                 weight: float = 1,
                 save_to_cache: bool = True) -> None:
        """
        Adds an edge between the specified nodes of the graph.

        Arguments:
            source (Node): The source node of the edge to add.
            target (Node): The target node of the edge to add.
            weight (float): The weight of the edge.
            save_to_cache (bool): Whether the edge should be saved to the local database. This
                                  argument is necessary (and `False`) when we load edges from
                                  the local cache.
        """
        if self._edges.get_edge(source, target) is not None:
            return

        self._edges.add_edge(
            source=source,
            target=target,
            weight=weight,
            save_to_cache=save_to_cache
        )