code: def connect(self, node, properties=None):
          
          self._check_node(node)
  
          if not self.definition['model'] and properties:
              raise NotImplementedError(
                  "Relationship properties without using a relationship model "
                  "is no longer supported."
              )
  
          params = {}
          rel_model = self.definition['model']
          rp = None  # rel_properties
  
          if rel_model:
              rp = {}
              # need to generate defaults etc to create fake instance
              tmp = rel_model(**properties) if properties else rel_model()
              # build params and place holders to pass to rel_helper
              for p, v in rel_model.deflate(tmp.__properties__).items():
                  rp[p] = '{' + p + '}'
                  params[p] = v
  
              if hasattr(tmp, 'pre_save'):
                  tmp.pre_save()
  
          new_rel = _rel_helper(lhs='us', rhs='them', ident='r', relation_properties=rp, **self.definition)
          q = "MATCH (them), (us) WHERE id(them)={them} and id(us)={self} " \
              "CREATE UNIQUE" + new_rel
  
          params['them'] = node.id
  
          if not rel_model:
              self.source.cypher(q, params)
              return True
  
          rel_ = self.source.cypher(q + " RETURN r", params)[0][0][0]
          rel_instance = self._set_start_end_cls(rel_model.inflate(rel_), node)
  
          if hasattr(rel_instance, 'post_save'):
              rel_instance.post_save()
  
          return rel_instance
docs: Connect a node
  
          :param node:
          :param properties: for the new relationship
          :type: dict
          :return: