| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Database.Bolt.Extras.Template
- class FromValue a where
- type Label = Text
- class Labels a where
- data Node :: * = Node {}
- class NodeLike a where
- class Properties a where
- type Property = (Text, Value)
- data Relationship :: * = Relationship {}
- class ToValue a where
- class URelationLike a where
- data URelationship :: * = URelationship {}
- data Value :: *
- makeNodeLike :: Name -> Q [Dec]
- makeURelationLike :: Name -> Q [Dec]
Documentation
Minimal complete definition
Constructors
| Node | |
data Relationship :: * #
Constructors
| Relationship | |
class URelationLike a where Source #
URelationLike class represents convertable into and from URelationship.
Minimal complete definition
data URelationship :: * #
Constructors
| URelationship | |
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.