{-# LANGUAGE OverloadedStrings #-}
module Hydra.Sources.Tier4.Ext.Pg.Validation where
import Prelude hiding ((++))
import qualified Data.List as L
import qualified Data.Map as M
import qualified Data.Set as S
import qualified Data.Maybe as Y
import Hydra.Dsl.Base as Base
import qualified Hydra.Dsl.Core as Core
import qualified Hydra.Dsl.Graph as Graph
import qualified Hydra.Dsl.Lib.Equality as Equality
import qualified Hydra.Dsl.Lib.Flows as Flows
import qualified Hydra.Dsl.Lib.Io as Io
import qualified Hydra.Dsl.Lib.Lists as Lists
import qualified Hydra.Dsl.Lib.Literals as Literals
import qualified Hydra.Dsl.Lib.Logic as Logic
import qualified Hydra.Dsl.Lib.Maps as Maps
import qualified Hydra.Dsl.Lib.Math as Math
import qualified Hydra.Dsl.Lib.Optionals as Optionals
import qualified Hydra.Dsl.Lib.Sets as Sets
import Hydra.Dsl.Lib.Strings as Strings
import qualified Hydra.Dsl.Module as Module
import qualified Hydra.Dsl.Terms as Terms
import qualified Hydra.Dsl.Types as Types
import Hydra.Kernel hiding (Edge(..), _Edge, _Edge_in, _Edge_out, Element(..), _Element, Graph(..), _Graph)
import Hydra.Pg.Model as PG
import Hydra.Sources.Tier4.Ext.Pg.Model
validationDefinition :: String -> TTerm a -> TElement a
validationDefinition :: forall a. String -> TTerm a -> TElement a
validationDefinition = Module -> String -> TTerm a -> TElement a
forall a. Module -> String -> TTerm a -> TElement a
definitionInModule Module
pgValidationModule
pgValidationModule :: Module
pgValidationModule :: Module
pgValidationModule = Namespace
-> [Element] -> [Module] -> [Module] -> Maybe String -> Module
Module (String -> Namespace
Namespace String
"hydra/pg/validation") [Element]
elements
[] [Module
pgModelModule] (Maybe String -> Module) -> Maybe String -> Module
forall a b. (a -> b) -> a -> b
$
String -> Maybe String
forall a. a -> Maybe a
Just String
"Utilities for validating property graphs against property graph schemas"
where
elements :: [Element]
elements = [
TElement
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
-> Element
forall a. TElement a -> Element
el TElement
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
validateEdgeDef,
TElement
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> ElementType Any
-> Element Any
-> Maybe String)
-> Element
forall a. TElement a -> Element
el TElement
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> ElementType Any
-> Element Any
-> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
validateElementDef,
TElement
((Any -> Any -> Maybe String)
-> (Any -> String) -> GraphSchema Any -> Graph Any -> Maybe String)
-> Element
forall a. TElement a -> Element
el TElement
((Any -> Any -> Maybe String)
-> (Any -> String) -> GraphSchema Any -> Graph Any -> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
validateGraphDef,
TElement
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
-> Element
forall a. TElement a -> Element
el TElement
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
validatePropertiesDef,
TElement
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
-> Element
forall a. TElement a -> Element
el TElement
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
validateVertexDef,
TElement ([Maybe Any] -> Maybe Any) -> Element
forall a. TElement a -> Element
el TElement ([Maybe Any] -> Maybe Any)
forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef,
TElement ((Any -> String) -> Edge Any -> String -> String)
-> Element
forall a. TElement a -> Element
el TElement ((Any -> String) -> Edge Any -> String -> String)
forall v. TElement ((v -> String) -> Edge v -> String -> String)
edgeErrorDef,
TElement (EdgeLabel -> EdgeLabel -> String) -> Element
forall a. TElement a -> Element
el TElement (EdgeLabel -> EdgeLabel -> String)
edgeLabelMismatchDef,
TElement (String -> String -> String) -> Element
forall a. TElement a -> Element
el TElement (String -> String -> String)
prependDef,
TElement (Bool -> String -> Maybe String) -> Element
forall a. TElement a -> Element
el TElement (Bool -> String -> Maybe String)
verifyDef,
TElement ((Any -> String) -> Vertex Any -> String -> String)
-> Element
forall a. TElement a -> Element
el TElement ((Any -> String) -> Vertex Any -> String -> String)
forall v. TElement ((v -> String) -> Vertex v -> String -> String)
vertexErrorDef,
TElement (VertexLabel -> VertexLabel -> String) -> Element
forall a. TElement a -> Element
el TElement (VertexLabel -> VertexLabel -> String)
vertexLabelMismatchDef]
validateEdgeDef :: TElement (
(t -> v -> Maybe String)
-> (v -> String)
-> Y.Maybe (v -> Y.Maybe PG.VertexLabel)
-> PG.EdgeType t
-> PG.Edge v
-> Y.Maybe String)
validateEdgeDef :: forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
validateEdgeDef = String
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"validateEdge" (TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [
Type -> Type -> Type
funT Type
tT (Type -> Type -> Type
funT Type
vT (Type -> Type
optionalT Type
stringT)),
Type -> Type -> Type
funT Type
vT Type
stringT,
Type -> Type
optionalT (Type -> Type -> Type
funT Type
vT (Type -> Type
optionalT Type
vertexLabelT)),
Type
edgeTypeTT,
Type
edgeVT,
Type -> Type
optionalT Type
stringT] (TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"checkValue" (TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String))
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"showValue" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"labelForVertexId" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"typ" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"el" (TTerm (Maybe Any) -> TTerm (Any -> Any))
-> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
(TElement ([Maybe Any] -> Maybe Any)
-> TTerm ([Maybe Any] -> Maybe Any)
forall a. TElement a -> TTerm a
ref TElement ([Maybe Any] -> Maybe Any)
forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef TTerm ([Maybe Any] -> Maybe Any)
-> TTerm [Maybe Any] -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ [TTerm (Maybe Any)] -> TTerm [Maybe Any]
forall a. [TTerm a] -> TTerm [a]
list [String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkLabel", String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkId", String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkProperties", String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkOut", String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkIn"]
TTerm (Maybe Any) -> [Field] -> TTerm (Maybe Any)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"failWith"String -> TTerm (String -> String) -> Field
forall a. String -> TTerm a -> Field
>: Type -> TTerm (String -> String) -> TTerm (String -> String)
forall a. Type -> TTerm a -> TTerm a
typed (Type -> Type -> Type
funT Type
stringT Type
stringT) (TTerm (String -> String) -> TTerm (String -> String))
-> TTerm (String -> String) -> TTerm (String -> String)
forall a b. (a -> b) -> a -> b
$
TElement ((Any -> String) -> Edge Any -> String -> String)
-> TTerm ((Any -> String) -> Edge Any -> String -> String)
forall a. TElement a -> TTerm a
ref TElement ((Any -> String) -> Edge Any -> String -> String)
forall v. TElement ((v -> String) -> Edge v -> String -> String)
edgeErrorDef TTerm ((Any -> String) -> Edge Any -> String -> String)
-> TTerm (Any -> String) -> TTerm (Edge Any -> String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Edge Any -> String -> String)
-> TTerm (Edge Any) -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Edge Any)
forall a. String -> TTerm a
var String
"el",
String
"checkLabel"String -> TTerm (Maybe String) -> Field
forall a. String -> TTerm a -> Field
>: (TElement (Bool -> String -> Maybe String)
-> TTerm (Bool -> String -> Maybe String)
forall a. TElement a -> TTerm a
ref TElement (Bool -> String -> Maybe String)
verifyDef
TTerm (Bool -> String -> Maybe String)
-> TTerm Bool -> TTerm (String -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm (String -> String -> Bool)
Equality.equalString
TTerm (String -> String -> Bool)
-> TTerm String -> TTerm (String -> Bool)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_EdgeLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"actual")
TTerm (String -> Bool) -> TTerm String -> TTerm Bool
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_EdgeLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"expected"))
TTerm (String -> Maybe String)
-> TTerm String -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (String -> String)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Wrong label" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (EdgeLabel -> EdgeLabel -> String)
-> TTerm (EdgeLabel -> EdgeLabel -> String)
forall a. TElement a -> TTerm a
ref TElement (EdgeLabel -> EdgeLabel -> String)
edgeLabelMismatchDef TTerm (EdgeLabel -> EdgeLabel -> String)
-> TTerm EdgeLabel -> TTerm (EdgeLabel -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm EdgeLabel
forall a. String -> TTerm a
var String
"expected" TTerm (EdgeLabel -> String) -> TTerm EdgeLabel -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm EdgeLabel
forall a. String -> TTerm a
var String
"actual"))))
TTerm (Maybe String) -> [Field] -> TTerm (Maybe String)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"expected"String -> TTerm Any -> Field
forall a. String -> TTerm a -> Field
>: Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_EdgeType Name
_EdgeType_label TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ",
String
"actual"String -> TTerm Any -> Field
forall a. String -> TTerm a -> Field
>: Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_label TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el"],
String
"checkId"String -> TTerm (Maybe Any) -> Field
forall a. String -> TTerm a -> Field
>: TTerm ((String -> Any) -> Maybe String -> Maybe Any)
forall a b. TTerm ((a -> b) -> Maybe a -> Maybe b)
Optionals.map
TTerm ((String -> Any) -> Maybe String -> Maybe Any)
-> TTerm (String -> Any) -> TTerm (Maybe String -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (String -> Any)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> Any)
-> TTerm (String -> String) -> TTerm (String -> Any)
forall b c a. TTerm (b -> c) -> TTerm (a -> b) -> TTerm (a -> c)
<.> (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Invalid id"))
TTerm (Maybe String -> Maybe Any)
-> TTerm (Maybe String) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (Any -> Any -> Maybe String)
forall a. String -> TTerm a
var String
"checkValue" TTerm (Any -> Any -> Maybe String)
-> TTerm Any -> TTerm (Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_EdgeType Name
_EdgeType_id TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ") TTerm (Any -> Maybe String) -> TTerm Any -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_id TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el")),
String
"checkProperties"String -> TTerm (Maybe Any) -> Field
forall a. String -> TTerm a -> Field
>: TTerm ((String -> Any) -> Maybe String -> Maybe Any)
forall a b. TTerm ((a -> b) -> Maybe a -> Maybe b)
Optionals.map
TTerm ((String -> Any) -> Maybe String -> Maybe Any)
-> TTerm (String -> Any) -> TTerm (Maybe String -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (String -> Any)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> Any)
-> TTerm (String -> String) -> TTerm (String -> Any)
forall b c a. TTerm (b -> c) -> TTerm (a -> b) -> TTerm (a -> c)
<.> (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Invalid property"))
TTerm (Maybe String -> Maybe Any)
-> TTerm (Maybe String) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
-> TTerm
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
forall a. TElement a -> TTerm a
ref TElement
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
validatePropertiesDef
TTerm
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
-> TTerm (Any -> Any -> Maybe String)
-> TTerm
([PropertyType Any] -> Map PropertyKey Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> Any -> Maybe String)
forall a. String -> TTerm a
var String
"checkValue"
TTerm ([PropertyType Any] -> Map PropertyKey Any -> Maybe String)
-> TTerm [PropertyType Any]
-> TTerm (Map PropertyKey Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> [PropertyType Any])
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_EdgeType Name
_EdgeType_properties TTerm (Any -> [PropertyType Any])
-> TTerm Any -> TTerm [PropertyType Any]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ")
TTerm (Map PropertyKey Any -> Maybe String)
-> TTerm (Map PropertyKey Any) -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Map PropertyKey Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_properties TTerm (Any -> Map PropertyKey Any)
-> TTerm Any -> TTerm (Map PropertyKey Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el")),
String
"checkOut"String -> TTerm Any -> Field
forall a. String -> TTerm a -> Field
>: TTerm (Maybe Any) -> TTerm Any -> TTerm (Any -> Any) -> TTerm Any
forall a b. TTerm (Maybe a) -> TTerm b -> TTerm (a -> b) -> TTerm b
ifOpt (String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"labelForVertexId")
TTerm Any
forall a. TTerm a
nothing
(String -> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"f" (TTerm (Maybe Any) -> TTerm (Any -> Any))
-> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TTerm (Maybe Any)
-> TTerm (Maybe Any)
-> TTerm (Any -> Maybe Any)
-> TTerm (Maybe Any)
forall a b. TTerm (Maybe a) -> TTerm b -> TTerm (a -> b) -> TTerm b
ifOpt (String -> TTerm (Any -> Maybe Any)
forall a. String -> TTerm a
var String
"f" TTerm (Any -> Maybe Any) -> TTerm Any -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_out TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el"))
(TTerm Any -> TTerm (Maybe Any)
forall x. TTerm x -> TTerm (Maybe x)
just (String -> TTerm (String -> Any)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> Any) -> TTerm String -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Out-vertex does not exist" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_out TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el")))))
(String -> TTerm (Maybe String) -> TTerm (Any -> Maybe Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"label" (TTerm (Maybe String) -> TTerm (Any -> Maybe Any))
-> TTerm (Maybe String) -> TTerm (Any -> Maybe Any)
forall a b. (a -> b) -> a -> b
$ TElement (Bool -> String -> Maybe String)
-> TTerm (Bool -> String -> Maybe String)
forall a. TElement a -> TTerm a
ref TElement (Bool -> String -> Maybe String)
verifyDef
TTerm (Bool -> String -> Maybe String)
-> TTerm Bool -> TTerm (String -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm (String -> String -> Bool)
Equality.equalString
TTerm (String -> String -> Bool)
-> TTerm String -> TTerm (String -> Bool)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_VertexLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"label")
TTerm (String -> Bool) -> TTerm String -> TTerm Bool
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_VertexLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_EdgeType Name
_EdgeType_out TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ")))
TTerm (String -> Maybe String)
-> TTerm String -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (String -> String)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Wrong out-vertex label" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (VertexLabel -> VertexLabel -> String)
-> TTerm (VertexLabel -> VertexLabel -> String)
forall a. TElement a -> TTerm a
ref TElement (VertexLabel -> VertexLabel -> String)
vertexLabelMismatchDef TTerm (VertexLabel -> VertexLabel -> String)
-> TTerm VertexLabel -> TTerm (VertexLabel -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> VertexLabel)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_EdgeType Name
_EdgeType_out TTerm (Any -> VertexLabel) -> TTerm Any -> TTerm VertexLabel
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ") TTerm (VertexLabel -> String) -> TTerm VertexLabel -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm VertexLabel
forall a. String -> TTerm a
var String
"label"))))),
String
"checkIn"String -> TTerm Any -> Field
forall a. String -> TTerm a -> Field
>: TTerm (Maybe Any) -> TTerm Any -> TTerm (Any -> Any) -> TTerm Any
forall a b. TTerm (Maybe a) -> TTerm b -> TTerm (a -> b) -> TTerm b
ifOpt (String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"labelForVertexId")
TTerm Any
forall a. TTerm a
nothing
(String -> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"f" (TTerm (Maybe Any) -> TTerm (Any -> Any))
-> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TTerm (Maybe Any)
-> TTerm (Maybe Any)
-> TTerm (Any -> Maybe Any)
-> TTerm (Maybe Any)
forall a b. TTerm (Maybe a) -> TTerm b -> TTerm (a -> b) -> TTerm b
ifOpt (String -> TTerm (Any -> Maybe Any)
forall a. String -> TTerm a
var String
"f" TTerm (Any -> Maybe Any) -> TTerm Any -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_in TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el"))
(TTerm Any -> TTerm (Maybe Any)
forall x. TTerm x -> TTerm (Maybe x)
just (String -> TTerm (String -> Any)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> Any) -> TTerm String -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"In-vertex does not exist" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_in TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el")))))
(String -> TTerm (Maybe String) -> TTerm (Any -> Maybe Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"label" (TTerm (Maybe String) -> TTerm (Any -> Maybe Any))
-> TTerm (Maybe String) -> TTerm (Any -> Maybe Any)
forall a b. (a -> b) -> a -> b
$ TElement (Bool -> String -> Maybe String)
-> TTerm (Bool -> String -> Maybe String)
forall a. TElement a -> TTerm a
ref TElement (Bool -> String -> Maybe String)
verifyDef
TTerm (Bool -> String -> Maybe String)
-> TTerm Bool -> TTerm (String -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm (String -> String -> Bool)
Equality.equalString
TTerm (String -> String -> Bool)
-> TTerm String -> TTerm (String -> Bool)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_VertexLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"label")
TTerm (String -> Bool) -> TTerm String -> TTerm Bool
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_VertexLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_EdgeType Name
_EdgeType_in TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ")))
TTerm (String -> Maybe String)
-> TTerm String -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (String -> String)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Wrong in-vertex label" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (VertexLabel -> VertexLabel -> String)
-> TTerm (VertexLabel -> VertexLabel -> String)
forall a. TElement a -> TTerm a
ref TElement (VertexLabel -> VertexLabel -> String)
vertexLabelMismatchDef TTerm (VertexLabel -> VertexLabel -> String)
-> TTerm VertexLabel -> TTerm (VertexLabel -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> VertexLabel)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_EdgeType Name
_EdgeType_in TTerm (Any -> VertexLabel) -> TTerm Any -> TTerm VertexLabel
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ") TTerm (VertexLabel -> String) -> TTerm VertexLabel -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm VertexLabel
forall a. String -> TTerm a
var String
"label")))))])
validateElementDef :: TElement (
(t -> v -> Maybe String)
-> (v -> String)
-> Y.Maybe (v -> Y.Maybe PG.VertexLabel)
-> PG.ElementType t
-> PG.Element v
-> Y.Maybe String)
validateElementDef :: forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
validateElementDef = String
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"validateElement" (TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [
Type -> Type -> Type
funT Type
tT (Type -> Type -> Type
funT Type
vT (Type -> Type
optionalT Type
stringT)),
Type -> Type -> Type
funT Type
vT Type
stringT,
Type -> Type
optionalT (Type -> Type -> Type
funT Type
vT (Type -> Type
optionalT Type
vertexLabelT)),
Type
elementTypeTT,
Type
elementVT,
Type -> Type
optionalT Type
stringT] (TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"checkValue" (TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String))
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> ElementType t
-> Element v
-> Maybe String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"showValue" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"labelForVertexId" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"typ" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm Any -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"el" (TTerm Any -> TTerm (Any -> Any))
-> TTerm Any -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
(Name -> Maybe (TTerm Any) -> [Field] -> TTerm (Any -> Any)
forall b u. Name -> Maybe (TTerm b) -> [Field] -> TTerm (u -> b)
match Name
_ElementType Maybe (TTerm Any)
forall a. Maybe a
Nothing [
Name
_ElementType_vertexName -> TTerm (Any -> Any) -> Field
forall a. Name -> TTerm a -> Field
>>: String -> TTerm Any -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"vt" (TTerm Any -> TTerm (Any -> Any))
-> TTerm Any -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ (Name -> Maybe (TTerm Any) -> [Field] -> TTerm (Any -> Any)
forall b u. Name -> Maybe (TTerm b) -> [Field] -> TTerm (u -> b)
match Name
_Element Maybe (TTerm Any)
forall a. Maybe a
Nothing [
Name
_Element_edgeName -> TTerm (Any -> Any) -> Field
forall a. Name -> TTerm a -> Field
>>: String -> TTerm (Maybe String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"e" (TTerm (Maybe String) -> TTerm (Any -> Any))
-> TTerm (Maybe String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TTerm String -> TTerm (Maybe String)
forall x. TTerm x -> TTerm (Maybe x)
just (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Edge instead of vertex" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_id TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"e"))),
Name
_Element_vertexName -> TTerm (Any -> Any) -> Field
forall a. Name -> TTerm a -> Field
>>: String -> TTerm (Maybe String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"vertex" (TTerm (Maybe String) -> TTerm (Any -> Any))
-> TTerm (Maybe String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TElement
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
-> TTerm
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
forall a. TElement a -> TTerm a
ref TElement
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
validateVertexDef
TTerm
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
-> TTerm (Any -> Any -> Maybe String)
-> TTerm
((Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> Any -> Maybe String)
forall a. String -> TTerm a
var String
"checkValue"
TTerm
((Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
-> TTerm (Any -> String)
-> TTerm (VertexType Any -> Vertex Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue"
TTerm (VertexType Any -> Vertex Any -> Maybe String)
-> TTerm (VertexType Any) -> TTerm (Vertex Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (VertexType Any)
forall a. String -> TTerm a
var String
"vt"
TTerm (Vertex Any -> Maybe String)
-> TTerm (Vertex Any) -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Vertex Any)
forall a. String -> TTerm a
var String
"vertex"]) TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el",
Name
_ElementType_edgeName -> TTerm (Any -> Any) -> Field
forall a. Name -> TTerm a -> Field
>>: String -> TTerm Any -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"et" (TTerm Any -> TTerm (Any -> Any))
-> TTerm Any -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ (Name -> Maybe (TTerm Any) -> [Field] -> TTerm (Any -> Any)
forall b u. Name -> Maybe (TTerm b) -> [Field] -> TTerm (u -> b)
match Name
_Element Maybe (TTerm Any)
forall a. Maybe a
Nothing [
Name
_Element_vertexName -> TTerm (Any -> Any) -> Field
forall a. Name -> TTerm a -> Field
>>: String -> TTerm (Maybe String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"v" (TTerm (Maybe String) -> TTerm (Any -> Any))
-> TTerm (Maybe String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TTerm String -> TTerm (Maybe String)
forall x. TTerm x -> TTerm (Maybe x)
just (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Vertex instead of edge" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Vertex Name
_Vertex_id TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"v"))),
Name
_Element_edgeName -> TTerm (Any -> Any) -> Field
forall a. Name -> TTerm a -> Field
>>: String -> TTerm (Maybe String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"edge" (TTerm (Maybe String) -> TTerm (Any -> Any))
-> TTerm (Maybe String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TElement
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
-> TTerm
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
forall a. TElement a -> TTerm a
ref TElement
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
validateEdgeDef
TTerm
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
-> TTerm (Any -> Any -> Maybe String)
-> TTerm
((Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> Any -> Maybe String)
forall a. String -> TTerm a
var String
"checkValue"
TTerm
((Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
-> TTerm (Any -> String)
-> TTerm
(Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any -> Edge Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue"
TTerm
(Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any -> Edge Any -> Maybe String)
-> TTerm (Maybe (Any -> Maybe VertexLabel))
-> TTerm (EdgeType Any -> Edge Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Maybe (Any -> Maybe VertexLabel))
forall a. String -> TTerm a
var String
"labelForVertexId"
TTerm (EdgeType Any -> Edge Any -> Maybe String)
-> TTerm (EdgeType Any) -> TTerm (Edge Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (EdgeType Any)
forall a. String -> TTerm a
var String
"et"
TTerm (Edge Any -> Maybe String)
-> TTerm (Edge Any) -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Edge Any)
forall a. String -> TTerm a
var String
"edge"]) TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el"]) TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ"
validateGraphDef :: TElement (
(t -> v -> Maybe String)
-> (v -> String)
-> PG.GraphSchema t
-> PG.Graph v
-> Y.Maybe String)
validateGraphDef :: forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
validateGraphDef = String
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"validateGraph" (TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> Map Name (Set TypeClass)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
forall a. [Type] -> Map Name (Set TypeClass) -> TTerm a -> TTerm a
functionNWithClasses [
Type -> Type -> Type
funT Type
tT (Type -> Type -> Type
funT Type
vT (Type -> Type
optionalT Type
stringT)),
Type -> Type -> Type
funT Type
vT Type
stringT,
Type
graphSchemaTT,
Type
graphVT,
Type -> Type
optionalT Type
stringT] Map Name (Set TypeClass)
ordV (TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"checkValue" (TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String))
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> GraphSchema t -> Graph v -> Maybe String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"showValue" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"schema" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"graph" (TTerm (Maybe Any) -> TTerm (Any -> Any))
-> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
(TElement ([Maybe Any] -> Maybe Any)
-> TTerm ([Maybe Any] -> Maybe Any)
forall a. TElement a -> TTerm a
ref TElement ([Maybe Any] -> Maybe Any)
forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef TTerm ([Maybe Any] -> Maybe Any)
-> TTerm [Maybe Any] -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ [TTerm (Maybe Any)] -> TTerm [Maybe Any]
forall a. [TTerm a] -> TTerm [a]
list [String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkVertices", String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkEdges"])
TTerm (Maybe Any) -> [Field] -> TTerm (Maybe Any)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"checkVertices"String -> TTerm (Maybe Any) -> Field
forall a. String -> TTerm a -> Field
>: (TElement ([Maybe Any] -> Maybe Any)
-> TTerm ([Maybe Any] -> Maybe Any)
forall a. TElement a -> TTerm a
ref TElement ([Maybe Any] -> Maybe Any)
forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef
TTerm ([Maybe Any] -> Maybe Any)
-> TTerm [Maybe Any] -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm ((Any -> Maybe Any) -> [Any] -> [Maybe Any])
forall a b. TTerm ((a -> b) -> [a] -> [b])
Lists.map TTerm ((Any -> Maybe Any) -> [Any] -> [Maybe Any])
-> TTerm (Any -> Maybe Any) -> TTerm ([Any] -> [Maybe Any])
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> Maybe Any)
forall a. String -> TTerm a
var String
"checkVertex" TTerm ([Any] -> [Maybe Any]) -> TTerm [Any] -> TTerm [Maybe Any]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm (Map Any Any -> [Any])
forall k v. TTerm (Map k v -> [v])
Maps.values TTerm (Map Any Any -> [Any]) -> TTerm (Map Any Any) -> TTerm [Any]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Map Any Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Graph Name
_Graph_vertices TTerm (Any -> Map Any Any) -> TTerm Any -> TTerm (Map Any Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"graph"))))
TTerm (Maybe Any) -> [Field] -> TTerm (Maybe Any)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"checkVertex"String -> TTerm (Any -> Any) -> Field
forall a. String -> TTerm a -> Field
>: String -> TTerm (Maybe String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"el" (TTerm (Maybe String) -> TTerm (Any -> Any))
-> TTerm (Maybe String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TTerm (Maybe Any)
-> TTerm (Maybe String)
-> TTerm (Any -> Maybe String)
-> TTerm (Maybe String)
forall a b. TTerm (Maybe a) -> TTerm b -> TTerm (a -> b) -> TTerm b
ifOpt (TTerm (Any -> Map Any Any -> Maybe Any)
forall k v. TTerm (k -> Map k v -> Maybe v)
Maps.lookup
TTerm (Any -> Map Any Any -> Maybe Any)
-> TTerm Any -> TTerm (Map Any Any -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Vertex Name
_Vertex_label TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el")
TTerm (Map Any Any -> Maybe Any)
-> TTerm (Map Any Any) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Map Any Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_GraphSchema Name
_GraphSchema_vertices TTerm (Any -> Map Any Any) -> TTerm Any -> TTerm (Map Any Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"schema"))
(TTerm String -> TTerm (Maybe String)
forall x. TTerm x -> TTerm (Maybe x)
just (TElement ((Any -> String) -> Vertex Any -> String -> String)
-> TTerm ((Any -> String) -> Vertex Any -> String -> String)
forall a. TElement a -> TTerm a
ref TElement ((Any -> String) -> Vertex Any -> String -> String)
forall v. TElement ((v -> String) -> Vertex v -> String -> String)
vertexErrorDef TTerm ((Any -> String) -> Vertex Any -> String -> String)
-> TTerm (Any -> String) -> TTerm (Vertex Any -> String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Vertex Any -> String -> String)
-> TTerm (Vertex Any) -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Vertex Any)
forall a. String -> TTerm a
var String
"el"
TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Unexpected label" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_VertexLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Vertex Name
_Vertex_label TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el")))))
(String -> TTerm (Maybe String) -> TTerm (Any -> Maybe String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"t" (TTerm (Maybe String) -> TTerm (Any -> Maybe String))
-> TTerm (Maybe String) -> TTerm (Any -> Maybe String)
forall a b. (a -> b) -> a -> b
$ TElement
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
-> TTerm
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
forall a. TElement a -> TTerm a
ref TElement
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
validateVertexDef
TTerm
((Any -> Any -> Maybe String)
-> (Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
-> TTerm (Any -> Any -> Maybe String)
-> TTerm
((Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> Any -> Maybe String)
forall a. String -> TTerm a
var String
"checkValue"
TTerm
((Any -> String) -> VertexType Any -> Vertex Any -> Maybe String)
-> TTerm (Any -> String)
-> TTerm (VertexType Any -> Vertex Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue"
TTerm (VertexType Any -> Vertex Any -> Maybe String)
-> TTerm (VertexType Any) -> TTerm (Vertex Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (VertexType Any)
forall a. String -> TTerm a
var String
"t"
TTerm (Vertex Any -> Maybe String)
-> TTerm (Vertex Any) -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Vertex Any)
forall a. String -> TTerm a
var String
"el")],
String
"checkEdges"String -> TTerm (Maybe Any) -> Field
forall a. String -> TTerm a -> Field
>: (TElement ([Maybe Any] -> Maybe Any)
-> TTerm ([Maybe Any] -> Maybe Any)
forall a. TElement a -> TTerm a
ref TElement ([Maybe Any] -> Maybe Any)
forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef
TTerm ([Maybe Any] -> Maybe Any)
-> TTerm [Maybe Any] -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm ((Any -> Maybe Any) -> [Any] -> [Maybe Any])
forall a b. TTerm ((a -> b) -> [a] -> [b])
Lists.map TTerm ((Any -> Maybe Any) -> [Any] -> [Maybe Any])
-> TTerm (Any -> Maybe Any) -> TTerm ([Any] -> [Maybe Any])
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> Maybe Any)
forall a. String -> TTerm a
var String
"checkEdge" TTerm ([Any] -> [Maybe Any]) -> TTerm [Any] -> TTerm [Maybe Any]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm (Map Any Any -> [Any])
forall k v. TTerm (Map k v -> [v])
Maps.values TTerm (Map Any Any -> [Any]) -> TTerm (Map Any Any) -> TTerm [Any]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Map Any Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Graph Name
_Graph_edges TTerm (Any -> Map Any Any) -> TTerm Any -> TTerm (Map Any Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"graph"))))
TTerm (Maybe Any) -> [Field] -> TTerm (Maybe Any)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"checkEdge"String -> TTerm (Any -> Any) -> Field
forall a. String -> TTerm a -> Field
>: String -> TTerm (Maybe String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"el" (TTerm (Maybe String) -> TTerm (Any -> Any))
-> TTerm (Maybe String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TTerm (Maybe Any)
-> TTerm (Maybe String)
-> TTerm (Any -> Maybe String)
-> TTerm (Maybe String)
forall a b. TTerm (Maybe a) -> TTerm b -> TTerm (a -> b) -> TTerm b
ifOpt (TTerm (Any -> Map Any Any -> Maybe Any)
forall k v. TTerm (k -> Map k v -> Maybe v)
Maps.lookup
TTerm (Any -> Map Any Any -> Maybe Any)
-> TTerm Any -> TTerm (Map Any Any -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_label TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el")
TTerm (Map Any Any -> Maybe Any)
-> TTerm (Map Any Any) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Map Any Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_GraphSchema Name
_GraphSchema_edges TTerm (Any -> Map Any Any) -> TTerm Any -> TTerm (Map Any Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"schema"))
(TTerm String -> TTerm (Maybe String)
forall x. TTerm x -> TTerm (Maybe x)
just (TElement ((Any -> String) -> Edge Any -> String -> String)
-> TTerm ((Any -> String) -> Edge Any -> String -> String)
forall a. TElement a -> TTerm a
ref TElement ((Any -> String) -> Edge Any -> String -> String)
forall v. TElement ((v -> String) -> Edge v -> String -> String)
edgeErrorDef TTerm ((Any -> String) -> Edge Any -> String -> String)
-> TTerm (Any -> String) -> TTerm (Edge Any -> String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Edge Any -> String -> String)
-> TTerm (Edge Any) -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Edge Any)
forall a. String -> TTerm a
var String
"el"
TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Unexpected label" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_EdgeLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_label TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el")))))
(String -> TTerm (Maybe String) -> TTerm (Any -> Maybe String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"t" (TTerm (Maybe String) -> TTerm (Any -> Maybe String))
-> TTerm (Maybe String) -> TTerm (Any -> Maybe String)
forall a b. (a -> b) -> a -> b
$ TElement
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
-> TTerm
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
forall a. TElement a -> TTerm a
ref TElement
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String)
-> Maybe (v -> Maybe VertexLabel)
-> EdgeType t
-> Edge v
-> Maybe String)
validateEdgeDef
TTerm
((Any -> Any -> Maybe String)
-> (Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
-> TTerm (Any -> Any -> Maybe String)
-> TTerm
((Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> Any -> Maybe String)
forall a. String -> TTerm a
var String
"checkValue"
TTerm
((Any -> String)
-> Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any
-> Edge Any
-> Maybe String)
-> TTerm (Any -> String)
-> TTerm
(Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any -> Edge Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue"
TTerm
(Maybe (Any -> Maybe VertexLabel)
-> EdgeType Any -> Edge Any -> Maybe String)
-> TTerm (Maybe (Any -> Maybe VertexLabel))
-> TTerm (EdgeType Any -> Edge Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Maybe (Any -> Maybe VertexLabel))
forall a. String -> TTerm a
var String
"labelForVertexId"
TTerm (EdgeType Any -> Edge Any -> Maybe String)
-> TTerm (EdgeType Any) -> TTerm (Edge Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (EdgeType Any)
forall a. String -> TTerm a
var String
"t"
TTerm (Edge Any -> Maybe String)
-> TTerm (Edge Any) -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Edge Any)
forall a. String -> TTerm a
var String
"el"),
String
"labelForVertexId"String -> TTerm (Maybe (Any -> Any)) -> Field
forall a. String -> TTerm a -> Field
>: Type -> TTerm (Maybe (Any -> Any)) -> TTerm (Maybe (Any -> Any))
forall a. Type -> TTerm a -> TTerm a
typed (Type -> Type
optionalT (Type -> Type -> Type
funT Type
vT (Type -> Type
optionalT Type
vertexLabelT))) (TTerm (Maybe (Any -> Any)) -> TTerm (Maybe (Any -> Any)))
-> TTerm (Maybe (Any -> Any)) -> TTerm (Maybe (Any -> Any))
forall a b. (a -> b) -> a -> b
$
TTerm (Any -> Any) -> TTerm (Maybe (Any -> Any))
forall x. TTerm x -> TTerm (Maybe x)
just (TTerm (Any -> Any) -> TTerm (Maybe (Any -> Any)))
-> TTerm (Any -> Any) -> TTerm (Maybe (Any -> Any))
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"i" (TTerm (Maybe Any) -> TTerm (Any -> Any))
-> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TTerm ((Any -> Any) -> Maybe Any -> Maybe Any)
forall a b. TTerm ((a -> b) -> Maybe a -> Maybe b)
Optionals.map TTerm ((Any -> Any) -> Maybe Any -> Maybe Any)
-> TTerm (Any -> Any) -> TTerm (Maybe Any -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Vertex Name
_Vertex_label) TTerm (Maybe Any -> Maybe Any)
-> TTerm (Maybe Any) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm (Any -> Map Any Any -> Maybe Any)
forall k v. TTerm (k -> Map k v -> Maybe v)
Maps.lookup TTerm (Any -> Map Any Any -> Maybe Any)
-> TTerm Any -> TTerm (Map Any Any -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"i" TTerm (Map Any Any -> Maybe Any)
-> TTerm (Map Any Any) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Map Any Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Graph Name
_Graph_vertices TTerm (Any -> Map Any Any) -> TTerm Any -> TTerm (Map Any Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"graph"))]]
validatePropertiesDef :: TElement (
(t -> v -> Maybe String)
-> [PG.PropertyType t]
-> M.Map PG.PropertyKey v
-> Y.Maybe String)
validatePropertiesDef :: forall t v.
TElement
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
validatePropertiesDef = String
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"validateProperties" (TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [
Type -> Type -> Type
funT Type
tT (Type -> Type -> Type
funT Type
vT (Type -> Type
optionalT Type
stringT)),
Type -> Type
listT Type
propertyTypeTT,
Type -> Type -> Type
mapT Type
propertyKeyT Type
vT,
Type -> Type
optionalT Type
stringT] (TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"checkValue" (TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String))
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"types" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"props" (TTerm (Maybe Any) -> TTerm (Any -> Any))
-> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
((TElement ([Maybe Any] -> Maybe Any)
-> TTerm ([Maybe Any] -> Maybe Any)
forall a. TElement a -> TTerm a
ref TElement ([Maybe Any] -> Maybe Any)
forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef TTerm ([Maybe Any] -> Maybe Any)
-> TTerm [Maybe Any] -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ [TTerm (Maybe Any)] -> TTerm [Maybe Any]
forall a. [TTerm a] -> TTerm [a]
list [String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkTypes", String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkValues"])
TTerm (Maybe Any) -> [Field] -> TTerm (Maybe Any)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"checkTypes"String -> TTerm (Maybe Any) -> Field
forall a. String -> TTerm a -> Field
>: TElement ([Maybe Any] -> Maybe Any)
-> TTerm ([Maybe Any] -> Maybe Any)
forall a. TElement a -> TTerm a
ref TElement ([Maybe Any] -> Maybe Any)
forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef TTerm ([Maybe Any] -> Maybe Any)
-> TTerm [Maybe Any] -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm ((Any -> Maybe Any) -> [Any] -> [Maybe Any])
forall a b. TTerm ((a -> b) -> [a] -> [b])
Lists.map TTerm ((Any -> Maybe Any) -> [Any] -> [Maybe Any])
-> TTerm (Any -> Maybe Any) -> TTerm ([Any] -> [Maybe Any])
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> Maybe Any)
forall a. String -> TTerm a
var String
"checkType" TTerm ([Any] -> [Maybe Any]) -> TTerm [Any] -> TTerm [Maybe Any]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm [Any]
forall a. String -> TTerm a
var String
"types"),
String
"checkType"String -> TTerm (Any -> Any) -> Field
forall a. String -> TTerm a -> Field
>:
Type -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a. Type -> TTerm a -> TTerm a
typed (Type -> Type -> Type
funT Type
propertyTypeTT (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ Type -> Type
optionalT Type
stringT) (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
String -> TTerm (Maybe String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"t" (TTerm (Maybe String) -> TTerm (Any -> Any))
-> TTerm (Maybe String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ TTerm Bool
-> TTerm (Maybe String)
-> TTerm (Maybe String)
-> TTerm (Maybe String)
forall a. TTerm Bool -> TTerm a -> TTerm a -> TTerm a
ifElse (Name -> Name -> TTerm (Any -> Bool)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_PropertyType Name
_PropertyType_required TTerm (Any -> Bool) -> TTerm Any -> TTerm Bool
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"t")
(TTerm (Maybe Any)
-> TTerm (Maybe String)
-> TTerm (Any -> Maybe String)
-> TTerm (Maybe String)
forall a b. TTerm (Maybe a) -> TTerm b -> TTerm (a -> b) -> TTerm b
ifOpt (TTerm (Any -> Map Any Any -> Maybe Any)
forall k v. TTerm (k -> Map k v -> Maybe v)
Maps.lookup TTerm (Any -> Map Any Any -> Maybe Any)
-> TTerm Any -> TTerm (Map Any Any -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_PropertyType Name
_PropertyType_key TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"t") TTerm (Map Any Any -> Maybe Any)
-> TTerm (Map Any Any) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Map Any Any)
forall a. String -> TTerm a
var String
"props")
(TTerm String -> TTerm (Maybe String)
forall x. TTerm x -> TTerm (Maybe x)
just (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Missing value for " TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_PropertyKey TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_PropertyType Name
_PropertyType_key TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"t"))))
(TTerm (Maybe String) -> TTerm (Any -> Maybe String)
forall a b. TTerm a -> TTerm (b -> a)
constant TTerm (Maybe String)
forall a. TTerm a
nothing))
TTerm (Maybe String)
forall a. TTerm a
nothing,
String
"checkValues"String -> TTerm (Maybe Any) -> Field
forall a. String -> TTerm a -> Field
>: ((TElement ([Maybe Any] -> Maybe Any)
-> TTerm ([Maybe Any] -> Maybe Any)
forall a. TElement a -> TTerm a
ref TElement ([Maybe Any] -> Maybe Any)
forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef TTerm ([Maybe Any] -> Maybe Any)
-> TTerm [Maybe Any] -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm (((Any, Any) -> Maybe Any) -> [(Any, Any)] -> [Maybe Any])
forall a b. TTerm ((a -> b) -> [a] -> [b])
Lists.map TTerm (((Any, Any) -> Maybe Any) -> [(Any, Any)] -> [Maybe Any])
-> TTerm ((Any, Any) -> Maybe Any)
-> TTerm ([(Any, Any)] -> [Maybe Any])
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm ((Any, Any) -> Maybe Any)
forall a. String -> TTerm a
var String
"checkPair" TTerm ([(Any, Any)] -> [Maybe Any])
-> TTerm [(Any, Any)] -> TTerm [Maybe Any]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm (Map Any Any -> [(Any, Any)])
forall k v. TTerm (Map k v -> [(k, v)])
Maps.toList TTerm (Map Any Any -> [(Any, Any)])
-> TTerm (Map Any Any) -> TTerm [(Any, Any)]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Map Any Any)
forall a. String -> TTerm a
var String
"props")))
TTerm (Maybe Any) -> [Field] -> TTerm (Maybe Any)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"m"String -> TTerm (Map Any Any) -> Field
forall a. String -> TTerm a -> Field
>: Type -> TTerm (Map Any Any) -> TTerm (Map Any Any)
forall a. Type -> TTerm a -> TTerm a
typed (Type -> Type -> Type
mapT Type
propertyKeyT Type
tT) (TTerm (Map Any Any) -> TTerm (Map Any Any))
-> TTerm (Map Any Any) -> TTerm (Map Any Any)
forall a b. (a -> b) -> a -> b
$
TTerm ([(Any, Any)] -> Map Any Any)
forall k v. TTerm ([(k, v)] -> Map k v)
Maps.fromList TTerm ([(Any, Any)] -> Map Any Any)
-> TTerm [(Any, Any)] -> TTerm (Map Any Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm ((Any -> (Any, Any)) -> [Any] -> [(Any, Any)])
forall a b. TTerm ((a -> b) -> [a] -> [b])
Lists.map
TTerm ((Any -> (Any, Any)) -> [Any] -> [(Any, Any)])
-> TTerm (Any -> (Any, Any)) -> TTerm ([Any] -> [(Any, Any)])
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (Any, Any) -> TTerm (Any -> (Any, Any))
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"p" (TTerm (Any, Any) -> TTerm (Any -> (Any, Any)))
-> TTerm (Any, Any) -> TTerm (Any -> (Any, Any))
forall a b. (a -> b) -> a -> b
$ TTerm Any -> TTerm Any -> TTerm (Any, Any)
forall a b. TTerm a -> TTerm b -> TTerm (a, b)
pair
(Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_PropertyType Name
_PropertyType_key TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"p")
(Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_PropertyType Name
_PropertyType_value TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"p"))
TTerm ([Any] -> [(Any, Any)]) -> TTerm [Any] -> TTerm [(Any, Any)]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm [Any]
forall a. String -> TTerm a
var String
"types"),
String
"checkPair"String -> TTerm (Any -> Any) -> Field
forall a. String -> TTerm a -> Field
>: String -> TTerm (Maybe String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"pair" (TTerm (Maybe String) -> TTerm (Any -> Any))
-> TTerm (Maybe String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ ((TTerm (Maybe Any)
-> TTerm (Maybe String)
-> TTerm (Any -> Maybe String)
-> TTerm (Maybe String)
forall a b. TTerm (Maybe a) -> TTerm b -> TTerm (a -> b) -> TTerm b
ifOpt (TTerm (Any -> Map Any Any -> Maybe Any)
forall k v. TTerm (k -> Map k v -> Maybe v)
Maps.lookup TTerm (Any -> Map Any Any -> Maybe Any)
-> TTerm Any -> TTerm (Map Any Any -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"key" TTerm (Map Any Any -> Maybe Any)
-> TTerm (Map Any Any) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Map Any Any)
forall a. String -> TTerm a
var String
"m")
(TTerm String -> TTerm (Maybe String)
forall x. TTerm x -> TTerm (Maybe x)
just (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Unexpected key" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_PropertyKey TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"key")))
(String -> TTerm (Maybe String) -> TTerm (Any -> Maybe String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"typ" (TTerm (Maybe String) -> TTerm (Any -> Maybe String))
-> TTerm (Maybe String) -> TTerm (Any -> Maybe String)
forall a b. (a -> b) -> a -> b
$ TTerm ((String -> String) -> Maybe String -> Maybe String)
forall a b. TTerm ((a -> b) -> Maybe a -> Maybe b)
Optionals.map
TTerm ((String -> String) -> Maybe String -> Maybe String)
-> TTerm (String -> String) -> TTerm (Maybe String -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Invalid value")
TTerm (Maybe String -> Maybe String)
-> TTerm (Maybe String) -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (Any -> Any -> Maybe String)
forall a. String -> TTerm a
var String
"checkValue" TTerm (Any -> Any -> Maybe String)
-> TTerm Any -> TTerm (Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ" TTerm (Any -> Maybe String) -> TTerm Any -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"val")))
TTerm (Maybe String) -> [Field] -> TTerm (Maybe String)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"key"String -> TTerm Any -> Field
forall a. String -> TTerm a -> Field
>: TTerm ((Any, Any) -> Any)
forall a b. TTerm ((a, b) -> a)
first TTerm ((Any, Any) -> Any) -> TTerm (Any, Any) -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any, Any)
forall a. String -> TTerm a
var String
"pair",
String
"val"String -> TTerm Any -> Field
forall a. String -> TTerm a -> Field
>: TTerm ((Any, Any) -> Any)
forall a b. TTerm ((a, b) -> b)
second TTerm ((Any, Any) -> Any) -> TTerm (Any, Any) -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any, Any)
forall a. String -> TTerm a
var String
"pair"])])])
validateVertexDef :: TElement (
(t -> v -> Maybe String)
-> (v -> String)
-> PG.VertexType t
-> PG.Vertex v
-> Y.Maybe String)
validateVertexDef :: forall t v.
TElement
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
validateVertexDef = String
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"validateVertex" (TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
-> TElement
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [
Type -> Type -> Type
funT Type
tT (Type -> Type -> Type
funT Type
vT (Type -> Type
optionalT Type
stringT)),
Type -> Type -> Type
funT Type
vT Type
stringT,
Type
vertexTypeTT,
Type
vertexVT,
Type -> Type
optionalT Type
stringT] (TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String))
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"checkValue" (TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String))
-> TTerm (Any -> Any)
-> TTerm
((t -> v -> Maybe String)
-> (v -> String) -> VertexType t -> Vertex v -> Maybe String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"showValue" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"typ" (TTerm (Any -> Any) -> TTerm (Any -> Any))
-> TTerm (Any -> Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"el" (TTerm (Maybe Any) -> TTerm (Any -> Any))
-> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
((TElement ([Maybe Any] -> Maybe Any)
-> TTerm ([Maybe Any] -> Maybe Any)
forall a. TElement a -> TTerm a
ref TElement ([Maybe Any] -> Maybe Any)
forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef TTerm ([Maybe Any] -> Maybe Any)
-> TTerm [Maybe Any] -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ [TTerm (Maybe Any)] -> TTerm [Maybe Any]
forall a. [TTerm a] -> TTerm [a]
list [String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkLabel", String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkId", String -> TTerm (Maybe Any)
forall a. String -> TTerm a
var String
"checkProperties"])
TTerm (Maybe Any) -> [Field] -> TTerm (Maybe Any)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"failWith"String -> TTerm (String -> String) -> Field
forall a. String -> TTerm a -> Field
>: Type -> TTerm (String -> String) -> TTerm (String -> String)
forall a. Type -> TTerm a -> TTerm a
typed (Type -> Type -> Type
funT Type
stringT Type
stringT) (TTerm (String -> String) -> TTerm (String -> String))
-> TTerm (String -> String) -> TTerm (String -> String)
forall a b. (a -> b) -> a -> b
$
TElement ((Any -> String) -> Vertex Any -> String -> String)
-> TTerm ((Any -> String) -> Vertex Any -> String -> String)
forall a. TElement a -> TTerm a
ref TElement ((Any -> String) -> Vertex Any -> String -> String)
forall v. TElement ((v -> String) -> Vertex v -> String -> String)
vertexErrorDef TTerm ((Any -> String) -> Vertex Any -> String -> String)
-> TTerm (Any -> String) -> TTerm (Vertex Any -> String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Vertex Any -> String -> String)
-> TTerm (Vertex Any) -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Vertex Any)
forall a. String -> TTerm a
var String
"el",
String
"checkLabel"String -> TTerm (Maybe String) -> Field
forall a. String -> TTerm a -> Field
>: (TElement (Bool -> String -> Maybe String)
-> TTerm (Bool -> String -> Maybe String)
forall a. TElement a -> TTerm a
ref TElement (Bool -> String -> Maybe String)
verifyDef
TTerm (Bool -> String -> Maybe String)
-> TTerm Bool -> TTerm (String -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm (String -> String -> Bool)
Equality.equalString
TTerm (String -> String -> Bool)
-> TTerm String -> TTerm (String -> Bool)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_VertexLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"actual")
TTerm (String -> Bool) -> TTerm String -> TTerm Bool
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_VertexLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"expected"))
TTerm (String -> Maybe String)
-> TTerm String -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (String -> String)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Wrong label" TTerm (String -> String) -> TTerm String -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement (VertexLabel -> VertexLabel -> String)
-> TTerm (VertexLabel -> VertexLabel -> String)
forall a. TElement a -> TTerm a
ref TElement (VertexLabel -> VertexLabel -> String)
vertexLabelMismatchDef TTerm (VertexLabel -> VertexLabel -> String)
-> TTerm VertexLabel -> TTerm (VertexLabel -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm VertexLabel
forall a. String -> TTerm a
var String
"expected" TTerm (VertexLabel -> String) -> TTerm VertexLabel -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm VertexLabel
forall a. String -> TTerm a
var String
"actual"))))
TTerm (Maybe String) -> [Field] -> TTerm (Maybe String)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"expected"String -> TTerm Any -> Field
forall a. String -> TTerm a -> Field
>: Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_VertexType Name
_VertexType_label TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ",
String
"actual"String -> TTerm Any -> Field
forall a. String -> TTerm a -> Field
>: Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Vertex Name
_Vertex_label TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el"],
String
"checkId"String -> TTerm (Maybe Any) -> Field
forall a. String -> TTerm a -> Field
>: TTerm ((String -> Any) -> Maybe String -> Maybe Any)
forall a b. TTerm ((a -> b) -> Maybe a -> Maybe b)
Optionals.map
TTerm ((String -> Any) -> Maybe String -> Maybe Any)
-> TTerm (String -> Any) -> TTerm (Maybe String -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (String -> Any)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> Any)
-> TTerm (String -> String) -> TTerm (String -> Any)
forall b c a. TTerm (b -> c) -> TTerm (a -> b) -> TTerm (a -> c)
<.> (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Invalid id"))
TTerm (Maybe String -> Maybe Any)
-> TTerm (Maybe String) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (Any -> Any -> Maybe String)
forall a. String -> TTerm a
var String
"checkValue" TTerm (Any -> Any -> Maybe String)
-> TTerm Any -> TTerm (Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_VertexType Name
_VertexType_id TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ") TTerm (Any -> Maybe String) -> TTerm Any -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Vertex Name
_Vertex_id TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el")),
String
"checkProperties"String -> TTerm (Maybe Any) -> Field
forall a. String -> TTerm a -> Field
>: TTerm ((String -> Any) -> Maybe String -> Maybe Any)
forall a b. TTerm ((a -> b) -> Maybe a -> Maybe b)
Optionals.map
TTerm ((String -> Any) -> Maybe String -> Maybe Any)
-> TTerm (String -> Any) -> TTerm (Maybe String -> Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (String -> TTerm (String -> Any)
forall a. String -> TTerm a
var String
"failWith" TTerm (String -> Any)
-> TTerm (String -> String) -> TTerm (String -> Any)
forall b c a. TTerm (b -> c) -> TTerm (a -> b) -> TTerm (a -> c)
<.> (TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ TTerm String
"Invalid property"))
TTerm (Maybe String -> Maybe Any)
-> TTerm (Maybe String) -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TElement
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
-> TTerm
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
forall a. TElement a -> TTerm a
ref TElement
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
forall t v.
TElement
((t -> v -> Maybe String)
-> [PropertyType t] -> Map PropertyKey v -> Maybe String)
validatePropertiesDef
TTerm
((Any -> Any -> Maybe String)
-> [PropertyType Any] -> Map PropertyKey Any -> Maybe String)
-> TTerm (Any -> Any -> Maybe String)
-> TTerm
([PropertyType Any] -> Map PropertyKey Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm (Any -> Any -> Maybe String)
forall a. String -> TTerm a
var String
"checkValue"
TTerm ([PropertyType Any] -> Map PropertyKey Any -> Maybe String)
-> TTerm [PropertyType Any]
-> TTerm (Map PropertyKey Any -> Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> [PropertyType Any])
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_VertexType Name
_VertexType_properties TTerm (Any -> [PropertyType Any])
-> TTerm Any -> TTerm [PropertyType Any]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"typ")
TTerm (Map PropertyKey Any -> Maybe String)
-> TTerm (Map PropertyKey Any) -> TTerm (Maybe String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Map PropertyKey Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Vertex Name
_Vertex_properties TTerm (Any -> Map PropertyKey Any)
-> TTerm Any -> TTerm (Map PropertyKey Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"el"))])
checkAllDef :: TElement ([Y.Maybe a] -> Y.Maybe a)
checkAllDef :: forall a. TElement ([Maybe a] -> Maybe a)
checkAllDef = String
-> TTerm ([Maybe a] -> Maybe a) -> TElement ([Maybe a] -> Maybe a)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"checkAll" (TTerm ([Maybe a] -> Maybe a) -> TElement ([Maybe a] -> Maybe a))
-> TTerm ([Maybe a] -> Maybe a) -> TElement ([Maybe a] -> Maybe a)
forall a b. (a -> b) -> a -> b
$
Type
-> Type
-> TTerm ([Maybe a] -> Maybe a)
-> TTerm ([Maybe a] -> Maybe a)
forall a. Type -> Type -> TTerm a -> TTerm a
function (Type -> Type
listT (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ Type -> Type
optionalT Type
aT) (Type -> Type
optionalT Type
aT) (TTerm ([Maybe a] -> Maybe a) -> TTerm ([Maybe a] -> Maybe a))
-> TTerm ([Maybe a] -> Maybe a) -> TTerm ([Maybe a] -> Maybe a)
forall a b. (a -> b) -> a -> b
$
String -> TTerm (Maybe Any) -> TTerm ([Maybe a] -> Maybe a)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"checks" (
(TTerm ([Any] -> Maybe Any)
forall a. TTerm ([a] -> Maybe a)
Lists.safeHead TTerm ([Any] -> Maybe Any) -> TTerm [Any] -> TTerm (Maybe Any)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm [Any]
forall a. String -> TTerm a
var String
"errors")
TTerm (Maybe Any) -> [Field] -> TTerm (Maybe Any)
forall a. TTerm a -> [Field] -> TTerm a
`with` [
String
"errors"String -> TTerm [Any] -> Field
forall a. String -> TTerm a -> Field
>: TTerm ([Maybe Any] -> [Any])
forall a. TTerm ([Maybe a] -> [a])
Optionals.cat TTerm ([Maybe Any] -> [Any]) -> TTerm [Maybe Any] -> TTerm [Any]
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm [Maybe Any]
forall a. String -> TTerm a
var String
"checks"])
edgeErrorDef :: TElement ((v -> String) -> PG.Edge v -> String -> String)
edgeErrorDef :: forall v. TElement ((v -> String) -> Edge v -> String -> String)
edgeErrorDef = String
-> TTerm ((v -> String) -> Edge v -> String -> String)
-> TElement ((v -> String) -> Edge v -> String -> String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"edgeError" (TTerm ((v -> String) -> Edge v -> String -> String)
-> TElement ((v -> String) -> Edge v -> String -> String))
-> TTerm ((v -> String) -> Edge v -> String -> String)
-> TElement ((v -> String) -> Edge v -> String -> String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm ((v -> String) -> Edge v -> String -> String)
-> TTerm ((v -> String) -> Edge v -> String -> String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [Type -> Type -> Type
funT Type
vT Type
stringT, Type
edgeVT, Type
stringT, Type
stringT] (TTerm ((v -> String) -> Edge v -> String -> String)
-> TTerm ((v -> String) -> Edge v -> String -> String))
-> TTerm ((v -> String) -> Edge v -> String -> String)
-> TTerm ((v -> String) -> Edge v -> String -> String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any)
-> TTerm ((v -> String) -> Edge v -> String -> String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"showValue" (TTerm (Any -> Any)
-> TTerm ((v -> String) -> Edge v -> String -> String))
-> TTerm (Any -> Any)
-> TTerm ((v -> String) -> Edge v -> String -> String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (String -> String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"e" (TTerm (String -> String) -> TTerm (Any -> Any))
-> TTerm (String -> String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm String
"Invalid edge with id " TTerm String -> TTerm String -> TTerm String
++ (String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Edge Name
_Edge_id TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"e")))
edgeLabelMismatchDef :: TElement (PG.EdgeLabel -> PG.EdgeLabel -> String)
edgeLabelMismatchDef :: TElement (EdgeLabel -> EdgeLabel -> String)
edgeLabelMismatchDef = String
-> TTerm (EdgeLabel -> EdgeLabel -> String)
-> TElement (EdgeLabel -> EdgeLabel -> String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"edgeLabelMismatch" (TTerm (EdgeLabel -> EdgeLabel -> String)
-> TElement (EdgeLabel -> EdgeLabel -> String))
-> TTerm (EdgeLabel -> EdgeLabel -> String)
-> TElement (EdgeLabel -> EdgeLabel -> String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm (EdgeLabel -> EdgeLabel -> String)
-> TTerm (EdgeLabel -> EdgeLabel -> String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [Type
edgeLabelT, Type
edgeLabelT, Type
stringT] (TTerm (EdgeLabel -> EdgeLabel -> String)
-> TTerm (EdgeLabel -> EdgeLabel -> String))
-> TTerm (EdgeLabel -> EdgeLabel -> String)
-> TTerm (EdgeLabel -> EdgeLabel -> String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any) -> TTerm (EdgeLabel -> EdgeLabel -> String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"expected" (TTerm (Any -> Any) -> TTerm (EdgeLabel -> EdgeLabel -> String))
-> TTerm (Any -> Any) -> TTerm (EdgeLabel -> EdgeLabel -> String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm String -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"actual" (TTerm String -> TTerm (Any -> Any))
-> TTerm String -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
TTerm String
"expected " TTerm String -> TTerm String -> TTerm String
++ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_EdgeLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"expected") TTerm String -> TTerm String -> TTerm String
++ TTerm String
", found " TTerm String -> TTerm String -> TTerm String
++ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_EdgeLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"actual")
prependDef :: TElement (String -> String -> String)
prependDef :: TElement (String -> String -> String)
prependDef = String
-> TTerm (String -> String -> String)
-> TElement (String -> String -> String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"prepend" (TTerm (String -> String -> String)
-> TElement (String -> String -> String))
-> TTerm (String -> String -> String)
-> TElement (String -> String -> String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [Type
stringT, Type
stringT, Type
stringT] (TTerm (String -> String -> String)
-> TTerm (String -> String -> String))
-> TTerm (String -> String -> String)
-> TTerm (String -> String -> String)
forall a b. (a -> b) -> a -> b
$
String -> TTerm (Any -> Any) -> TTerm (String -> String -> String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"prefix" (TTerm (Any -> Any) -> TTerm (String -> String -> String))
-> TTerm (Any -> Any) -> TTerm (String -> String -> String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm String -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"msg" (TTerm String -> TTerm (Any -> Any))
-> TTerm String -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
(String -> TTerm String
forall a. String -> TTerm a
var String
"prefix") TTerm String -> TTerm String -> TTerm String
++ TTerm String
": " TTerm String -> TTerm String -> TTerm String
++ (String -> TTerm String
forall a. String -> TTerm a
var String
"msg")
verifyDef :: TElement (Bool -> String -> Maybe String)
verifyDef :: TElement (Bool -> String -> Maybe String)
verifyDef = String
-> TTerm (Bool -> String -> Maybe String)
-> TElement (Bool -> String -> Maybe String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"verify" (TTerm (Bool -> String -> Maybe String)
-> TElement (Bool -> String -> Maybe String))
-> TTerm (Bool -> String -> Maybe String)
-> TElement (Bool -> String -> Maybe String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm (Bool -> String -> Maybe String)
-> TTerm (Bool -> String -> Maybe String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [Type
booleanT, Type
stringT, Type -> Type
optionalT Type
stringT] (TTerm (Bool -> String -> Maybe String)
-> TTerm (Bool -> String -> Maybe String))
-> TTerm (Bool -> String -> Maybe String)
-> TTerm (Bool -> String -> Maybe String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any) -> TTerm (Bool -> String -> Maybe String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"b" (TTerm (Any -> Any) -> TTerm (Bool -> String -> Maybe String))
-> TTerm (Any -> Any) -> TTerm (Bool -> String -> Maybe String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"err" (TTerm (Maybe Any) -> TTerm (Any -> Any))
-> TTerm (Maybe Any) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
TTerm Bool
-> TTerm (Maybe Any) -> TTerm (Maybe Any) -> TTerm (Maybe Any)
forall a. TTerm Bool -> TTerm a -> TTerm a -> TTerm a
ifElse (String -> TTerm Bool
forall a. String -> TTerm a
var String
"b")
TTerm (Maybe Any)
forall a. TTerm a
nothing
(TTerm Any -> TTerm (Maybe Any)
forall x. TTerm x -> TTerm (Maybe x)
just (TTerm Any -> TTerm (Maybe Any)) -> TTerm Any -> TTerm (Maybe Any)
forall a b. (a -> b) -> a -> b
$ String -> TTerm Any
forall a. String -> TTerm a
var String
"err")
vertexErrorDef :: TElement ((v -> String) -> PG.Vertex v -> String -> String)
vertexErrorDef :: forall v. TElement ((v -> String) -> Vertex v -> String -> String)
vertexErrorDef = String
-> TTerm ((v -> String) -> Vertex v -> String -> String)
-> TElement ((v -> String) -> Vertex v -> String -> String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"vertexError" (TTerm ((v -> String) -> Vertex v -> String -> String)
-> TElement ((v -> String) -> Vertex v -> String -> String))
-> TTerm ((v -> String) -> Vertex v -> String -> String)
-> TElement ((v -> String) -> Vertex v -> String -> String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm ((v -> String) -> Vertex v -> String -> String)
-> TTerm ((v -> String) -> Vertex v -> String -> String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [Type -> Type -> Type
funT Type
vT Type
stringT, Type
vertexVT, Type
stringT, Type
stringT] (TTerm ((v -> String) -> Vertex v -> String -> String)
-> TTerm ((v -> String) -> Vertex v -> String -> String))
-> TTerm ((v -> String) -> Vertex v -> String -> String)
-> TTerm ((v -> String) -> Vertex v -> String -> String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any)
-> TTerm ((v -> String) -> Vertex v -> String -> String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"showValue" (TTerm (Any -> Any)
-> TTerm ((v -> String) -> Vertex v -> String -> String))
-> TTerm (Any -> Any)
-> TTerm ((v -> String) -> Vertex v -> String -> String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm (String -> String) -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"v" (TTerm (String -> String) -> TTerm (Any -> Any))
-> TTerm (String -> String) -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
TElement (String -> String -> String)
-> TTerm (String -> String -> String)
forall a. TElement a -> TTerm a
ref TElement (String -> String -> String)
prependDef TTerm (String -> String -> String)
-> TTerm String -> TTerm (String -> String)
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (TTerm String
"Invalid vertex with id " TTerm String -> TTerm String -> TTerm String
++ (String -> TTerm (Any -> String)
forall a. String -> TTerm a
var String
"showValue" TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ (Name -> Name -> TTerm (Any -> Any)
forall a b. Name -> Name -> TTerm (a -> b)
project Name
_Vertex Name
_Vertex_id TTerm (Any -> Any) -> TTerm Any -> TTerm Any
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"v")))
vertexLabelMismatchDef :: TElement (PG.VertexLabel -> PG.VertexLabel -> String)
vertexLabelMismatchDef :: TElement (VertexLabel -> VertexLabel -> String)
vertexLabelMismatchDef = String
-> TTerm (VertexLabel -> VertexLabel -> String)
-> TElement (VertexLabel -> VertexLabel -> String)
forall a. String -> TTerm a -> TElement a
validationDefinition String
"vertexLabelMismatch" (TTerm (VertexLabel -> VertexLabel -> String)
-> TElement (VertexLabel -> VertexLabel -> String))
-> TTerm (VertexLabel -> VertexLabel -> String)
-> TElement (VertexLabel -> VertexLabel -> String)
forall a b. (a -> b) -> a -> b
$
[Type]
-> TTerm (VertexLabel -> VertexLabel -> String)
-> TTerm (VertexLabel -> VertexLabel -> String)
forall a. [Type] -> TTerm a -> TTerm a
functionN [Type
vertexLabelT, Type
vertexLabelT, Type
stringT] (TTerm (VertexLabel -> VertexLabel -> String)
-> TTerm (VertexLabel -> VertexLabel -> String))
-> TTerm (VertexLabel -> VertexLabel -> String)
-> TTerm (VertexLabel -> VertexLabel -> String)
forall a b. (a -> b) -> a -> b
$
String
-> TTerm (Any -> Any)
-> TTerm (VertexLabel -> VertexLabel -> String)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"expected" (TTerm (Any -> Any)
-> TTerm (VertexLabel -> VertexLabel -> String))
-> TTerm (Any -> Any)
-> TTerm (VertexLabel -> VertexLabel -> String)
forall a b. (a -> b) -> a -> b
$ String -> TTerm String -> TTerm (Any -> Any)
forall x a b. String -> TTerm x -> TTerm (a -> b)
lambda String
"actual" (TTerm String -> TTerm (Any -> Any))
-> TTerm String -> TTerm (Any -> Any)
forall a b. (a -> b) -> a -> b
$
TTerm String
"expected " TTerm String -> TTerm String -> TTerm String
++ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_VertexLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"expected") TTerm String -> TTerm String -> TTerm String
++ TTerm String
", found " TTerm String -> TTerm String -> TTerm String
++ (Name -> TTerm (Any -> String)
forall a b. Name -> TTerm (a -> b)
unwrap Name
_VertexLabel TTerm (Any -> String) -> TTerm Any -> TTerm String
forall a b. TTerm (a -> b) -> TTerm a -> TTerm b
@@ String -> TTerm Any
forall a. String -> TTerm a
var String
"actual")
ordV :: Map Name (Set TypeClass)
ordV = ([(Name, Set TypeClass)] -> Map Name (Set TypeClass)
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList [(String -> Name
Name String
"v", [TypeClass] -> Set TypeClass
forall a. Ord a => [a] -> Set a
S.fromList [TypeClass
TypeClassOrdering])])
edgeLabelT :: Type
edgeLabelT = Name -> Type
TypeVariable Name
_EdgeLabel
edgeTypeTT :: Type
edgeTypeTT = Type -> Type -> Type
Types.apply (Name -> Type
TypeVariable Name
_EdgeType) Type
tT
edgeVT :: Type
edgeVT = Type -> Type -> Type
Types.apply (Name -> Type
TypeVariable Name
_Edge) Type
vT
elementTypeTT :: Type
elementTypeTT = Type -> Type -> Type
Types.apply (Name -> Type
TypeVariable Name
_ElementType) Type
tT
elementVT :: Type
elementVT = Type -> Type -> Type
Types.apply (Name -> Type
TypeVariable Name
_Element) Type
vT
graphSchemaTT :: Type
graphSchemaTT = Type -> Type -> Type
Types.apply (Name -> Type
TypeVariable Name
_GraphSchema) Type
tT
graphVT :: Type
graphVT = Type -> Type -> Type
Types.apply (Name -> Type
TypeVariable Name
_Graph) Type
vT
propertyKeyT :: Type
propertyKeyT = Name -> Type
TypeVariable Name
_PropertyKey
propertyTypeTT :: Type
propertyTypeTT = Type -> Type -> Type
Types.apply (Name -> Type
TypeVariable Name
_PropertyType) Type
tT
vertexLabelT :: Type
vertexLabelT = Name -> Type
TypeVariable Name
_VertexLabel
vertexTypeTT :: Type
vertexTypeTT = Type -> Type -> Type
Types.apply (Name -> Type
TypeVariable Name
_VertexType) Type
tT
vertexVT :: Type
vertexVT = Type -> Type -> Type
Types.apply (Name -> Type
TypeVariable Name
_Vertex) Type
vT
tT :: Type
tT = String -> Type
Types.var String
"t"
vT :: Type
vT = String -> Type
Types.var String
"v"