module Database.Bolt.Extras.Internal.Types
(
FromValue (..)
, Label
, Labels (..)
, NodeLike (..)
, Properties (..)
, Property
, ToValue (..)
, URelationLike (..)
) where
import Data.Map.Strict (Map)
import Data.Text (Text)
import Database.Bolt (Node (..), URelationship (..), Value (..))
type Label = Text
type Property = (Text, Value)
class NodeLike a where
toNode :: a -> Node
fromNode :: Node -> a
class URelationLike a where
toURelation :: a -> URelationship
fromURelation :: URelationship -> a
class ToValue a where
toValue :: a -> Value
class FromValue a where
fromValue :: Value -> a
class Labels a where
getLabels :: a -> [Label]
instance Labels Node where
getLabels = labels
instance Labels URelationship where
getLabels = pure . urelType
class Properties a where
getProps :: a -> Map Text Value
instance Properties Node where
getProps = nodeProps
instance Properties URelationship where
getProps = urelProps