hasbolt-extras-0.0.0.21: src/Database/Bolt/Extras/DSL.hs
module Database.Bolt.Extras.DSL
(
-- * Selectors for nodes, relations and paths
--
-- | These data types let you specify Cypher queries.
--
-- With @OverloadedLabels@ and operators you can write selectors in very concise
-- Cypher-like form:
--
-- > (#n .: "Name" .# ["name" =: "C42"]) -: (defR .: "NAME_OF") :!->: (#m .: "Molecule")
-- > (n:Name{name:"C42"})-[:NAME_OF]->(m:Molecule)
--
NodeSelector(..),
RelSelector(..),
SelectorLike(..),
(.:), (.#),
toNodeSelector, toRelSelector,
PathSelector(..),
PathPart(..),
(-:), (<-:),
Selector(..),
Selectors,
-- ** Default selectors
defaultNode, defN, defaultRel, defR,
-- * Cypher conditions
Cond(..),
Conds(..),
-- * DSL for Cypher
--
-- | The free-monadic DSL lets you write Cypher queries in Haskell like this:
--
-- > formQuery $ do
-- > matchF [
-- > PS $ (#n .: "Name" .# ["name" =: "C42"]) -: (defR .: "NAME_OF") :!->: (#m .: "Molecule")
-- > ]
-- > returnF ["n", "m"]
--
-- ** DSL operations
module Database.Bolt.Extras.DSL.Internal.Language,
-- ** Rendering Cypher queries
formQuery,
-- ** Implementation details
Expr(..)
) where
import Database.Bolt.Extras.DSL.Internal.Executer
import Database.Bolt.Extras.DSL.Internal.Instances ()
import Database.Bolt.Extras.DSL.Internal.Language
import Database.Bolt.Extras.DSL.Internal.Types