def create(cls, *props, **kwargs): """ Call to CREATE with parameters map. A new instance will be created and saved. :param props: dict of properties to create the nodes. :type props: tuple :param lazy: False by default, specify True to get nodes with id only without the parameters. :type: bool :rtype: list """ if 'streaming' in kwargs: warnings.warn( 'streaming is not supported by bolt, please remove the kwarg', category=DeprecationWarning, stacklevel=1) lazy = kwargs.get('lazy', False) # create mapped query print(':'.join(cls.inherited_labels())) query = "CREATE (n:{0} $create_params)".format(':'.join( cls.inherited_labels())) # close query if lazy: query += " RETURN id(n)" else: query += " RETURN n" results = [] for item in [ cls.deflate(p, obj=_UnsavedNode(), skip_empty=True) for p in props ]: node, _ = db.cypher_query(query, {'create_params': item}) results.extend(node[0]) nodes = [cls.inflate(node) for node in results] if not lazy and hasattr(cls, 'post_create'): for node in nodes: node.post_create() return nodes
def create(cls, *props, **kwargs): """ Call to CREATE with parameters map. A new instance will be created and saved. :param props: dict of properties to create the nodes. :type props: tuple :param lazy: False by default, specify True to get nodes with id only without the parameters. :type: bool :rtype: list """ if 'streaming' in kwargs: warnings.warn('streaming is not supported by bolt, please remove the kwarg', category=DeprecationWarning, stacklevel=1) lazy = kwargs.get('lazy', False) # create mapped query query = "CREATE (n:{0} {{create_params}})".format(':'.join(cls.inherited_labels())) # close query if lazy: query += " RETURN id(n)" else: query += " RETURN n" results = [] for item in [cls.deflate(p, obj=_UnsavedNode(), skip_empty=True) for p in props]: node, _ = db.cypher_query(query, {'create_params': item}) results.extend(node[0]) nodes = [cls.inflate(node) for node in results] if not lazy and hasattr(cls, 'post_create'): for node in nodes: node.post_create() return nodes