{-# LANGUAGE OverloadedStrings #-}
module Hydra.Sources.Tier4.Langs.Cypher.OpenCypher where
import Hydra.Sources.Tier3.All
import Hydra.Dsl.Annotations
import Hydra.Dsl.Bootstrap
import Hydra.Dsl.Types as Types
openCypherModule :: Module
openCypherModule :: Module
openCypherModule = Namespace
-> [Element] -> [Module] -> [Module] -> Maybe [Char] -> Module
Module Namespace
ns [Element]
elements [Module
hydraCoreModule] [Module]
tier0Modules (Maybe [Char] -> Module) -> Maybe [Char] -> Module
forall a b. (a -> b) -> a -> b
$
[Char] -> Maybe [Char]
forall a. a -> Maybe a
Just ([Char]
"A Cypher model based on the OpenCypher specification (version 23), copyright Neo Technology, available at:\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
" https://opencypher.org/resources/")
where
ns :: Namespace
ns = [Char] -> Namespace
Namespace [Char]
"hydra/langs/cypher/openCypher"
def :: [Char] -> Type -> Element
def = Namespace -> [Char] -> Type -> Element
datatype Namespace
ns
cypher :: [Char] -> Type
cypher = Namespace -> [Char] -> Type
typeref Namespace
ns
elements :: [Element]
elements = [
[Char] -> Type -> Element
def [Char]
"Query" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"regular"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"RegularQuery",
[Char]
"standalone"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"StandaloneCall"],
[Char] -> Type -> Element
def [Char]
"RegularQuery" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"head"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"SingleQuery",
[Char]
"rest"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Union"],
[Char] -> Type -> Element
def [Char]
"Union" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"all"[Char] -> Type -> FieldType
>: Type
boolean,
[Char]
"query"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"SingleQuery"],
[Char] -> Type -> Element
def [Char]
"SingleQuery" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"singlePart"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"SinglePartQuery",
[Char]
"multiPart"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"MultiPartQuery"],
[Char] -> Type -> Element
def [Char]
"SinglePartQuery" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"reading"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"ReadingClause",
[Char]
"updating"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"UpdatingClause",
[Char]
"return"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Return"],
[Char] -> Type -> Element
def [Char]
"WithClause" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"reading"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"ReadingClause",
[Char]
"updating"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"UpdatingClause",
[Char]
"with"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"With"],
[Char] -> Type -> Element
def [Char]
"MultiPartQuery" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"with"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"WithClause",
[Char]
"body"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"SinglePartQuery"],
[Char] -> Type -> Element
def [Char]
"UpdatingClause" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"create"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Create",
[Char]
"merge"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Merge",
[Char]
"delete"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Delete",
[Char]
"set"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Set",
[Char]
"remove"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Remove"],
[Char] -> Type -> Element
def [Char]
"ReadingClause" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"match"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Match",
[Char]
"unwind"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Unwind",
[Char]
"inQueryCall"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"InQueryCall"],
[Char] -> Type -> Element
def [Char]
"Match" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"optional"[Char] -> Type -> FieldType
>: Type
boolean,
[Char]
"pattern"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Pattern",
[Char]
"where"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Where"],
[Char] -> Type -> Element
def [Char]
"Unwind" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression",
[Char]
"variable"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Variable"],
[Char] -> Type -> Element
def [Char]
"Merge" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"patternPart"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PatternPart",
[Char]
"actions"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"MergeAction"],
[Char] -> Type -> Element
def [Char]
"MatchOrCreate" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[[Char]] -> Type
enum [[Char]
"match", [Char]
"create"],
[Char] -> Type -> Element
def [Char]
"MergeAction" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"action"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"MatchOrCreate",
[Char]
"set"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Set"],
[Char] -> Type -> Element
def [Char]
"Create" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Pattern",
[Char] -> Type -> Element
def [Char]
"Set" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"SetItem",
[Char] -> Type -> Element
def [Char]
"SetItem" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"property"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PropertyEquals",
[Char]
"variableEqual"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"VariableEquals",
[Char]
"variablePlusEqual"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"VariablePlusEquals",
[Char]
"variableLabels"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"VariableAndNodeLabels"],
[Char] -> Type -> Element
def [Char]
"PropertyEquals" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"lhs"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PropertyExpression",
[Char]
"rhs"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"VariableEquals" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"lhs"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Variable",
[Char]
"rhs"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"VariablePlusEquals" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"lhs"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Variable",
[Char]
"rhs"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"VariableAndNodeLabels" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"variable"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Variable",
[Char]
"labels"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"NodeLabels"],
[Char] -> Type -> Element
def [Char]
"Delete" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"detach"[Char] -> Type -> FieldType
>: Type
boolean,
[Char]
"expressions"[Char] -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"Remove" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"RemoveItem",
[Char] -> Type -> Element
def [Char]
"RemoveItem" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"variableLabels"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"VariableAndNodeLabels",
[Char]
"property"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PropertyExpression"],
[Char] -> Type -> Element
def [Char]
"InQueryCall" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"call"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ExplicitProcedureInvocation",
[Char]
"yieldItems"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"YieldItems"],
[Char] -> Type -> Element
def [Char]
"ProcedureInvocation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"explicit"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ExplicitProcedureInvocation",
[Char]
"implicit"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ImplicitProcedureInvocation"],
[Char] -> Type -> Element
def [Char]
"StarOrYieldItems" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"star"[Char] -> Type -> FieldType
>: Type
unit,
[Char]
"items"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"YieldItems"],
[Char] -> Type -> Element
def [Char]
"StandaloneCall" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"call"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ProcedureInvocation",
[Char]
"yieldItems"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"StarOrYieldItems"],
[Char] -> Type -> Element
def [Char]
"YieldItems" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"items"[Char] -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"YieldItem",
[Char]
"where"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Where"],
[Char] -> Type -> Element
def [Char]
"YieldItem" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"field"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"ProcedureResultField",
[Char]
"variable"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Variable"],
[Char] -> Type -> Element
def [Char]
"With" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"projection"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ProjectionBody",
[Char]
"where"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Where"],
[Char] -> Type -> Element
def [Char]
"Return" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[Char] -> Type
cypher [Char]
"ProjectionBody",
[Char] -> Type -> Element
def [Char]
"ProjectionBody" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"distinct"[Char] -> Type -> FieldType
>: Type
boolean,
[Char]
"projectionItems"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ProjectionItems",
[Char]
"order"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Order",
[Char]
"skip"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Skip",
[Char]
"limit"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Limit"],
[Char] -> Type -> Element
def [Char]
"ProjectionItems" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"star"[Char] -> Type -> FieldType
>: Type
boolean,
[Char]
"explicit"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"ProjectionItem"],
[Char] -> Type -> Element
def [Char]
"ProjectionItem" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression",
[Char]
"variable"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Variable"],
[Char] -> Type -> Element
def [Char]
"Order" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"SortItem",
[Char] -> Type -> Element
def [Char]
"Skip" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[Char] -> Type
cypher [Char]
"Expression",
[Char] -> Type -> Element
def [Char]
"Limit" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[Char] -> Type
cypher [Char]
"Expression",
[Char] -> Type -> Element
def [Char]
"SortOrder" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[[Char]] -> Type
enum [[Char]
"ascending", [Char]
"descending"],
[Char] -> Type -> Element
def [Char]
"SortItem" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression",
[Char]
"order"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"SortOrder"],
[Char] -> Type -> Element
def [Char]
"Where" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[Char] -> Type
cypher [Char]
"Expression",
[Char] -> Type -> Element
def [Char]
"Pattern" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"PatternPart",
[Char] -> Type -> Element
def [Char]
"PatternPart" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"variable"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Variable",
[Char]
"pattern"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"AnonymousPatternPart"],
[Char] -> Type -> Element
def [Char]
"AnonymousPatternPart" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[Char] -> Type
cypher [Char]
"PatternElement",
[Char] -> Type -> Element
def [Char]
"NodePatternChain" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"nodePattern"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"NodePattern",
[Char]
"chain"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"PatternElementChain"],
[Char] -> Type -> Element
def [Char]
"PatternElement" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"chained"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"NodePatternChain",
[Char]
"parenthesized"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PatternElement"],
[Char] -> Type -> Element
def [Char]
"RelationshipsPattern" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"nodePattern"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"NodePattern",
[Char]
"chain"[Char] -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"PatternElementChain"],
[Char] -> Type -> Element
def [Char]
"NodePattern" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"variable"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Variable",
[Char]
"labels"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"NodeLabels",
[Char]
"properties"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Properties"],
[Char] -> Type -> Element
def [Char]
"PatternElementChain" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"relationship"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"RelationshipPattern",
[Char]
"node"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"NodePattern"],
[Char] -> Type -> Element
def [Char]
"RelationshipPattern" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"leftArrow"[Char] -> Type -> FieldType
>: Type
boolean,
[Char]
"detail"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"RelationshipDetail",
[Char]
"rightArrow"[Char] -> Type -> FieldType
>: Type
boolean],
[Char] -> Type -> Element
def [Char]
"RelationshipDetail" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"variable"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Variable",
[Char]
"types"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"RelationshipTypes",
[Char]
"range"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"RangeLiteral",
[Char]
"properties"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Properties"],
[Char] -> Type -> Element
def [Char]
"Properties" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"map"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"MapLiteral",
[Char]
"parameter"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Parameter"],
[Char] -> Type -> Element
def [Char]
"RelationshipTypes" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"RelTypeName",
[Char] -> Type -> Element
def [Char]
"NodeLabels" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"NodeLabel",
[Char] -> Type -> Element
def [Char]
"NodeLabel" Type
string,
[Char] -> Type -> Element
def [Char]
"RangeLiteral" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"start"[Char] -> Type -> FieldType
>: Type -> Type
optional Type
bigint,
[Char]
"end"[Char] -> Type -> FieldType
>: Type -> Type
optional Type
bigint],
[Char] -> Type -> Element
def [Char]
"RelTypeName" Type
string,
[Char] -> Type -> Element
def [Char]
"PropertyExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"atom"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Atom",
[Char]
"lookups"[Char] -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"PropertyLookup"],
[Char] -> Type -> Element
def [Char]
"Expression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"OrExpression",
[Char] -> Type -> Element
def [Char]
"OrExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"XorExpression",
[Char] -> Type -> Element
def [Char]
"XorExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"AndExpression",
[Char] -> Type -> Element
def [Char]
"AndExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"NotExpression",
[Char] -> Type -> Element
def [Char]
"NotExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"not"[Char] -> Type -> FieldType
>: Type
boolean,
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ComparisonExpression"],
[Char] -> Type -> Element
def [Char]
"ComparisonExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"left"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"StringListNullPredicateExpression",
[Char]
"right"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"PartialComparisonExpression"],
[Char] -> Type -> Element
def [Char]
"ComparisonOperator" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[[Char]] -> Type
enum [
[Char]
"eq",
[Char]
"neq",
[Char]
"lt",
[Char]
"gt",
[Char]
"lte",
[Char]
"gte"],
[Char] -> Type -> Element
def [Char]
"PartialComparisonExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"operator"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ComparisonOperator",
[Char]
"right"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"StringListNullPredicateExpression"],
[Char] -> Type -> Element
def [Char]
"StringListNullPredicateExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"left"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"AddOrSubtractExpression",
[Char]
"right"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"StringListNullPredicateRightHandSide"],
[Char] -> Type -> Element
def [Char]
"StringListNullPredicateRightHandSide" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"string"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"StringPredicateExpression",
[Char]
"list"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ListPredicateExpression",
[Char]
"null"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"NullPredicateExpression"],
[Char] -> Type -> Element
def [Char]
"StringPredicateExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"operator"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"StringPredicateOperator",
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"AddOrSubtractExpression"],
[Char] -> Type -> Element
def [Char]
"StringPredicateOperator" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[[Char]] -> Type
enum [
[Char]
"startsWith",
[Char]
"endsWith",
[Char]
"contains"],
[Char] -> Type -> Element
def [Char]
"ListPredicateExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[Char] -> Type
cypher [Char]
"AddOrSubtractExpression",
[Char] -> Type -> Element
def [Char]
"NullPredicateExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
Type
boolean,
[Char] -> Type -> Element
def [Char]
"AddOrSubtractExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"left"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"MultiplyDivideModuloExpression",
[Char]
"right"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"AddOrSubtractRightHandSide"],
[Char] -> Type -> Element
def [Char]
"AddOrSubtractRightHandSide" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"operator"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"AddOrSubtractOperator",
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"MultiplyDivideModuloExpression"],
[Char] -> Type -> Element
def [Char]
"AddOrSubtractOperator" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[[Char]] -> Type
enum [
[Char]
"add",
[Char]
"subtract"],
[Char] -> Type -> Element
def [Char]
"MultiplyDivideModuloExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"left"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PowerOfExpression",
[Char]
"right"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"MultiplyDivideModuloRightHandSide"],
[Char] -> Type -> Element
def [Char]
"MultiplyDivideModuloRightHandSide" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"operator"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"MultiplyDivideModuloOperator",
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PowerOfExpression"],
[Char] -> Type -> Element
def [Char]
"MultiplyDivideModuloOperator" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[[Char]] -> Type
enum [
[Char]
"multiply",
[Char]
"divide",
[Char]
"modulo"],
[Char] -> Type -> Element
def [Char]
"PowerOfExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"UnaryAddOrSubtractExpression",
[Char] -> Type -> Element
def [Char]
"UnaryAddOrSubtractExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"operator"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"AddOrSubtractOperator",
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"NonArithmeticOperatorExpression"],
[Char] -> Type -> Element
def [Char]
"ListOperatorExpressionOrPropertyLookup" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"list"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ListOperatorExpression",
[Char]
"property"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PropertyLookup"],
[Char] -> Type -> Element
def [Char]
"NonArithmeticOperatorExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"atom"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Atom",
[Char]
"listsAndLookups"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"ListOperatorExpressionOrPropertyLookup",
[Char]
"labels"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"NodeLabels"],
[Char] -> Type -> Element
def [Char]
"RangeExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"start"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression",
[Char]
"end"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"ListOperatorExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"single"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression",
[Char]
"range"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"RangeExpression"],
[Char] -> Type -> Element
def [Char]
"PropertyLookup" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[Char] -> Type
cypher [Char]
"PropertyKeyName",
[Char] -> Type -> Element
def [Char]
"Atom" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"literal"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Literal",
[Char]
"parameter"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Parameter",
[Char]
"case"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"CaseExpression",
[Char]
"countStar"[Char] -> Type -> FieldType
>: Type
unit,
[Char]
"listComprehension"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ListComprehension",
[Char]
"patternComprehension"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PatternComprehension",
[Char]
"quantifier"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Quantifier",
[Char]
"patternPredicate"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PatternPredicate",
[Char]
"parenthesized"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ParenthesizedExpression",
[Char]
"functionInvocation"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"FunctionInvocation",
[Char]
"existentialSubquery"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ExistentialSubquery",
[Char]
"variable"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Variable"],
[Char] -> Type -> Element
def [Char]
"CaseExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"expression"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression",
[Char]
"alternatives"[Char] -> Type -> FieldType
>: Type -> Type
nonemptyList (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"CaseAlternative",
[Char]
"else"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"CaseAlternative" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"condition"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression",
[Char]
"result"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"ListComprehension" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"left"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"FilterExpression",
[Char]
"right"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"PatternComprehension" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"variable"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Variable",
[Char]
"pattern"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"RelationshipsPattern",
[Char]
"where"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Where",
[Char]
"right"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"Quantifier" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"operator"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"QuantifierOperator",
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"FilterExpression"],
[Char] -> Type -> Element
def [Char]
"QuantifierOperator" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[[Char]] -> Type
enum [
[Char]
"all",
[Char]
"any",
[Char]
"none",
[Char]
"single"],
[Char] -> Type -> Element
def [Char]
"FilterExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"idInColl"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"IdInColl",
[Char]
"where"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Where"],
[Char] -> Type -> Element
def [Char]
"PatternPredicate" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"RelationshipsPattern",
[Char] -> Type -> Element
def [Char]
"ParenthesizedExpression" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression",
[Char] -> Type -> Element
def [Char]
"IdInColl" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"variable"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Variable",
[Char]
"expression"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"FunctionInvocation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"name"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"QualifiedName",
[Char]
"distinct"[Char] -> Type -> FieldType
>: Type
boolean,
[Char]
"arguments"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"QualifiedName" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"namespace"[Char] -> Type -> FieldType
>: Type
string,
[Char]
"local"[Char] -> Type -> FieldType
>: Type
string],
[Char] -> Type -> Element
def [Char]
"PatternWhere" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"pattern"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Pattern",
[Char]
"where"[Char] -> Type -> FieldType
>: Type -> Type
optional (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Where"],
[Char] -> Type -> Element
def [Char]
"ExistentialSubquery" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"regular"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"RegularQuery",
[Char]
"pattern"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PatternWhere"],
[Char] -> Type -> Element
def [Char]
"ExplicitProcedureInvocation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"name"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"QualifiedName",
[Char]
"arguments"[Char] -> Type -> FieldType
>: Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"ImplicitProcedureInvocation" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"QualifiedName",
[Char] -> Type -> Element
def [Char]
"ProcedureResultField" Type
string,
[Char] -> Type -> Element
def [Char]
"Variable" Type
string,
[Char] -> Type -> Element
def [Char]
"Literal" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"boolean"[Char] -> Type -> FieldType
>: Type
boolean,
[Char]
"null"[Char] -> Type -> FieldType
>: Type
unit,
[Char]
"number"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"NumberLiteral",
[Char]
"string"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"StringLiteral",
[Char]
"list"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"ListLiteral",
[Char]
"map"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"MapLiteral"],
[Char] -> Type -> Element
def [Char]
"NumberLiteral" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"double"[Char] -> Type -> FieldType
>: Type
float64,
[Char]
"integer"[Char] -> Type -> FieldType
>: Type
bigint],
[Char] -> Type -> Element
def [Char]
"StringLiteral" Type
string,
[Char] -> Type -> Element
def [Char]
"ListLiteral" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"Expression",
[Char] -> Type -> Element
def [Char]
"MapLiteral" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
Type -> Type
list (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ [Char] -> Type
cypher [Char]
"KeyValuePair",
[Char] -> Type -> Element
def [Char]
"KeyValuePair" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
record [
[Char]
"key"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"PropertyKeyName",
[Char]
"value"[Char] -> Type -> FieldType
>: [Char] -> Type
cypher [Char]
"Expression"],
[Char] -> Type -> Element
def [Char]
"PropertyKeyName" Type
string,
[Char] -> Type -> Element
def [Char]
"Parameter" (Type -> Element) -> Type -> Element
forall a b. (a -> b) -> a -> b
$
[FieldType] -> Type
union [
[Char]
"symbolic"[Char] -> Type -> FieldType
>: Type
string,
[Char]
"integer"[Char] -> Type -> FieldType
>: Type
bigint]]