hasbolt-extras-0.0.0.12: Extras for hasbolt library

Safe HaskellNone
LanguageHaskell2010

Database.Bolt.Extras.Template

Synopsis

Documentation

class FromValue a where Source #

FromValue means that something can be converted from Bolt Value.

Minimal complete definition

fromValue

Methods

fromValue :: Value -> a Source #

Instances
FromValue Bool Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

fromValue :: Value -> Bool Source #

FromValue Double Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

FromValue Float Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

FromValue Int Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

fromValue :: Value -> Int Source #

FromValue () Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

fromValue :: Value -> () Source #

FromValue Text Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

fromValue :: Value -> Text Source #

FromValue Structure Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

FromValue Value Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

FromValue a => FromValue [a] Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

fromValue :: Value -> [a] Source #

FromValue a => FromValue (Maybe a) Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

fromValue :: Value -> Maybe a Source #

FromValue (Map Text Value) Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

type Label = Text Source #

Alias for Neo4j label.

class Labels a where Source #

Minimal complete definition

getLabels

Methods

getLabels :: a -> [Label] Source #

Instances
Labels Node Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Types

Methods

getLabels :: Node -> [Label] Source #

Labels URelationship Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Types

data Node #

Constructors

Node 

Fields

Instances
Eq Node 
Instance details

Defined in Database.Bolt.Value.Type

Methods

(==) :: Node -> Node -> Bool #

(/=) :: Node -> Node -> Bool #

Show Node 
Instance details

Defined in Database.Bolt.Value.Type

Methods

showsPrec :: Int -> Node -> ShowS #

show :: Node -> String #

showList :: [Node] -> ShowS #

RecordValue Node 
Instance details

Defined in Database.Bolt.Record

Methods

exact :: Monad m => Value -> m Node #

Properties Node Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Types

Labels Node Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Types

Methods

getLabels :: Node -> [Label] Source #

GetBoltId Node Source # 
Instance details

Defined in Database.Bolt.Extras.Persisted

class NodeLike a where Source #

NodeLike class represents convertable into and from Node.

Minimal complete definition

toNode, fromNode

Methods

toNode :: a -> Node Source #

fromNode :: Node -> a Source #

class Properties a where Source #

Minimal complete definition

getProps

Methods

getProps :: a -> Map Text Value Source #

type Property = (Text, Value) Source #

Alias for Neo4j property.

data Relationship #

Constructors

Relationship 

Fields

class ToValue a where Source #

ToValue means that something can be converted into Bolt Value.

Minimal complete definition

toValue

Methods

toValue :: a -> Value Source #

Instances
ToValue Bool Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: Bool -> Value Source #

ToValue Double Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: Double -> Value Source #

ToValue Float Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: Float -> Value Source #

ToValue Int Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: Int -> Value Source #

ToValue () Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: () -> Value Source #

ToValue Text Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: Text -> Value Source #

ToValue Structure Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

ToValue Value Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: Value -> Value Source #

ToValue a => ToValue [a] Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: [a] -> Value Source #

ToValue a => ToValue (Maybe a) Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: Maybe a -> Value Source #

ToValue (Map Text Value) Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

class URelationLike a where Source #

URelationLike class represents convertable into and from URelationship.

Minimal complete definition

toURelation, fromURelation

data URelationship #

Constructors

URelationship 

Fields

data Value #

The Value datatype generalizes all primitive BoltValues

Constructors

N () 
B Bool 
I Int 
F Double 
T Text 
L [Value] 
M (Map Text Value) 
S Structure 
Instances
Eq Value 
Instance details

Defined in Database.Bolt.Value.Type

Methods

(==) :: Value -> Value -> Bool #

(/=) :: Value -> Value -> Bool #

Show Value 
Instance details

Defined in Database.Bolt.Value.Type

Methods

showsPrec :: Int -> Value -> ShowS #

show :: Value -> String #

showList :: [Value] -> ShowS #

FromValue Value Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

ToValue Value Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

Methods

toValue :: Value -> Value Source #

ToCypher Value Source #

Convertation for Value into Cypher.

Instance details

Defined in Database.Bolt.Extras.Query.Cypher

Methods

toCypher :: Value -> Text Source #

ToCypher Property Source #

Converts property with name and value to name:value.

Instance details

Defined in Database.Bolt.Extras.Query.Cypher

ToCypher [Property] Source #

Several properties are formatted with concatenation.

Instance details

Defined in Database.Bolt.Extras.Query.Cypher

Methods

toCypher :: [Property] -> Text Source #

RecordValue (Map Text Value) 
Instance details

Defined in Database.Bolt.Record

Methods

exact :: Monad m => Value -> m (Map Text Value) #

FromValue (Map Text Value) Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

ToValue (Map Text Value) Source # 
Instance details

Defined in Database.Bolt.Extras.Template.Instances

makeNodeLike :: Name -> Q [Dec] Source #

Make an instance of NodeLike class. Only data types with one constructor are currently supported. Each field is transformed into Text key and its value is transformed into a Value. For example, we have a structure

data Foo = Bar { baz  :: Double
               , quux :: Text
               , quuz :: Int
               }

You can make it instance of NodeClass by writing > makeNodeLike ''Foo

Then you may create example and convert it into from from Node:

ghci>:set -XOverloadedStrings
ghci> let foo = Bar 42.0 "Loren ipsum" 7
ghci> toNode foo
Node {nodeIdentity = -1, labels = ["Foo"], nodeProps = fromList [("baz",F 42.0),("quux",T "Loren ipsum"),("quuz",I 7)]}
ghci> fromNode . toNode $ foo :: Foo
Bar {baz = 42.0, quux = "Loren ipsum", quuz = 7}

makeURelationLike :: Name -> Q [Dec] Source #

Make an instance of URelationLike class. Transformations are the same as in NodeLike instance declaration with the only one difference: URelationship holds only one label (or type), but Node holds list of labels.