haskell-neo4j-client-0.3.2.4: A Haskell neo4j client

Safe HaskellNone
LanguageHaskell98

Database.Neo4j.Batch

Contents

Synopsis

Usage

With batch mode you can issue several commands to Neo4j at once. In order to issue batches you must use the Batch monad, parameters in batch mode can be actual entities already obtained by issuing regular commands or previous batch commands, or even batch futures, that is you can refer to entities created in the same batch, for instance:

withConnection "127.0.0.1" 7474 $ do
   g <- B.runBatch $ do
       neo <- B.createNode M.empty
       cypher <- B.createNode M.empty
       B.createRelationship "KNOWS" M.empty neo cypher
   ...

Batch commands return a Database.Neo4j.Graph object that holds all the information about relationships, nodes and their labels that can be inferred from running a batch command.

General

type Batch a = State BatchState a Source #

Nodes

createNode :: Properties -> Batch (BatchFuture Node) Source #

Batch operation to create a node

createNamedNode :: String -> Properties -> Batch (BatchFuture Node) Source #

Batch operation to create a node and assign it a name to easily retrieve it from the resulting graph of the batch

getNode :: NodeBatchIdentifier a => a -> Batch (BatchFuture Node) Source #

Batch operation to get a node from the DB

getNamedNode :: NodeBatchIdentifier a => String -> a -> Batch (BatchFuture Node) Source #

Batch operation to get a node from the DB and assign it a name

deleteNode :: NodeBatchIdentifier a => a -> Batch (BatchFuture ()) Source #

Batch operation to delete a node

Relationships

createRelationship :: (NodeBatchIdentifier a, NodeBatchIdentifier b) => RelationshipType -> Properties -> a -> b -> Batch (BatchFuture Relationship) Source #

Create a new relationship with a type and a set of properties

createNamedRelationship :: (NodeBatchIdentifier a, NodeBatchIdentifier b) => String -> RelationshipType -> Properties -> a -> b -> Batch (BatchFuture Relationship) Source #

Create a new relationship with a type and a set of properties and assign it an identifier

getRelationship :: RelBatchIdentifier r => r -> Batch (BatchFuture Relationship) Source #

Refresh a relationship entity with the contents in the DB

getNamedRelationship :: RelBatchIdentifier r => String -> r -> Batch (BatchFuture Relationship) Source #

Refresh a relationship entity with the contents in the DB and assign it an identifier

getRelationshipFrom :: Relationship -> Batch (BatchFuture Node) Source #

Get the "node from" from a relationship from the DB

getRelationshipTo :: Relationship -> Batch (BatchFuture Node) Source #

Get the "node to" from a relationship from the DB

deleteRelationship :: RelBatchIdentifier r => r -> Batch (BatchFuture ()) Source #

Delete a relationship

getRelationships :: NodeBatchIdentifier n => n -> Direction -> [RelationshipType] -> Batch (BatchFuture [Relationship]) Source #

Get all relationships for a node

Properties

setProperties :: BatchEntity a => a -> Properties -> Batch (BatchFuture ()) Source #

Set all relationship/node properties

setProperty :: BatchEntity a => a -> Text -> PropertyValue -> Batch (BatchFuture ()) Source #

Set a relationship/node property

deleteProperties :: BatchEntity a => a -> Batch (BatchFuture ()) Source #

Delete all relationship/node properties

deleteProperty :: BatchEntity a => a -> Text -> Batch (BatchFuture ()) Source #

Delete a relationship/node property

Labels

getLabels :: NodeBatchIdentifier a => a -> Batch (BatchFuture [Label]) Source #

Retrieve all labels for a node, if the node doesn't exist already it will raise an exception | Raises Neo4jNoEntityException if the node doesn't exist

getNodesByLabelAndProperty :: Label -> Maybe (Text, PropertyValue) -> Batch (BatchFuture [Node]) Source #

Get all nodes using a label and a property

addLabels :: NodeBatchIdentifier a => [Label] -> a -> Batch (BatchFuture ()) Source #

Add labels to a node | Raises Neo4jNoEntityException if the node doesn't exist

changeLabels :: NodeBatchIdentifier a => [Label] -> a -> Batch (BatchFuture ()) Source #

Change node labels | Raises Neo4jNoEntityException if the node doesn't exist

removeLabel :: NodeBatchIdentifier a => Label -> a -> Batch (BatchFuture ()) Source #

Remove a label for a node | Raises Neo4jNoEntityException if the node doesn't exist