greskell-2.0.1.0: Haskell binding for Gremlin graph query language
MaintainerToshio Ito <debug.ito@gmail.com>
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Greskell.Extra

Description

Extra utility functions implemented by Greskell.

Since: 0.2.3.0

Synopsis

Property readers

Re-export property readers.

Since: 1.0.0.0

lookupAs :: (PMapKey k, NonEmptyLike c, PMapValue k ~ a, FromGraphSON a) => k -> PMap c GValue -> Either PMapLookupException a Source #

Lookup the value and parse it into a.

lookupAs' :: (PMapKey k, NonEmptyLike c, PMapValue k ~ Maybe a, FromGraphSON a) => k -> PMap c GValue -> Either PMapLookupException (Maybe a) Source #

Similar to lookupAs, but this function converts a null result into Nothing.

A null result is either (1) the key k is not found in the map, or (2) the key is found, but the value is null.

lookupListAs :: (PMapKey k, NonEmptyLike c, PMapValue k ~ a, FromGraphSON a) => k -> PMap c GValue -> Either PMapLookupException (NonEmpty a) Source #

Look up the values and parse them into a.

lookupListAs' :: (PMapKey k, NonEmptyLike c, PMapValue k ~ Maybe a, FromGraphSON a) => k -> PMap c GValue -> Either PMapLookupException [Maybe a] Source #

Similar to lookupListAs, but this function accepts null results.

If the key k is not found in the map, it returns an empty list. If the key k is found and nulls are included in the values, they are obtained as Nothing.

pMapToFail :: MonadFail m => Either PMapLookupException a -> m a Source #

Convert the lookup result into a MonadFail. It fails with the description returned by pMapDecribeError.

Property writers

writeKeyValues :: Element e => [KeyValue e] -> Walk SideEffect e e Source #

Make a series of .property steps to write the given key-value pairs as properties. Use <=:> and <=?> to make a KeyValue within Binder.

Since: 1.0.0.0

(<=:>) :: ToJSON b => Key a b -> b -> Binder (KeyValue a) Source #

Like =:, but this one takes a real value, binds it into a Greskell value and returns KeyValue.

Since: 1.0.0.0

(<=?>) :: ToJSON b => Key a (Maybe b) -> Maybe b -> Binder (KeyValue a) Source #

Like <=:>, but this one is for an optional property. If the value is Just, it's equivalent to <=:>. If the value is Nothing, it returns KeyNoValue.

Since: 1.0.0.0

writePropertyKeyValues :: (ToJSON v, Element e) => [(Text, v)] -> Binder (Walk SideEffect e e) Source #

Make a series of .property steps to write the given key-value pairs as properties.

Since: 0.2.3.0

writePMapProperties :: (Foldable c, ToJSON v, Element e) => PMap c v -> Binder (Walk SideEffect e e) Source #

Make a series of .property steps to write all properties in the given PMap.

Since: 1.0.0.0

Control idioms

gWhenEmptyInput Source #

Arguments

:: (ToGTraversal g, Split cc c, Lift Transform cc, Lift Transform c, WalkType c, WalkType cc) 
=> g cc [s] s

the body traversal

-> Walk c s s

the result walk

The result Walk emits the input elements as-is when there is at least one input element. If there is no input element, it runs the body traversal once and outputs its result.

You can use this function to implement "upsert" a vertex (i.e. add a vertex if not exist).

See also: https://stackoverflow.com/questions/46027444/

Since: 1.1.0.0

Examples

examples :: [(String, String)] Source #

Examples of using this module. See the source. The fst of the output is the testee, while the snd is the expectation.