packages feed

hydra-0.15.0: src/main/haskell/Hydra/Pg/Query.hs

-- Note: this is an automatically generated file. Do not edit.

-- | A common model for pattern-matching queries over property graphs

module Hydra.Pg.Query where

import qualified Hydra.Core as Core
import qualified Hydra.Pg.Model as Model
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci

data AggregationQuery =
  AggregationQueryCount
  deriving (Eq, Ord, Read, Show)

_AggregationQuery = Core.Name "hydra.pg.query.AggregationQuery"

_AggregationQuery_count = Core.Name "count"

newtype ApplicationQuery =
  ApplicationQuery {
    unApplicationQuery :: [Query]}
  deriving (Eq, Ord, Read, Show)

_ApplicationQuery = Core.Name "hydra.pg.query.ApplicationQuery"

data AssociativeExpression =
  AssociativeExpression {
    associativeExpressionOperator :: BinaryOperator,
    associativeExpressionOperands :: [Expression]}
  deriving (Eq, Ord, Read, Show)

_AssociativeExpression = Core.Name "hydra.pg.query.AssociativeExpression"

_AssociativeExpression_operator = Core.Name "operator"

_AssociativeExpression_operands = Core.Name "operands"

data BinaryExpression =
  BinaryExpression {
    binaryExpressionLeft :: Expression,
    binaryExpressionOperator :: BinaryOperator,
    binaryExpressionRight :: Expression}
  deriving (Eq, Ord, Read, Show)

_BinaryExpression = Core.Name "hydra.pg.query.BinaryExpression"

_BinaryExpression_left = Core.Name "left"

_BinaryExpression_operator = Core.Name "operator"

_BinaryExpression_right = Core.Name "right"

data BinaryBooleanOperator =
  BinaryBooleanOperatorAnd  |
  BinaryBooleanOperatorOr  |
  BinaryBooleanOperatorXor
  deriving (Eq, Ord, Read, Show)

_BinaryBooleanOperator = Core.Name "hydra.pg.query.BinaryBooleanOperator"

_BinaryBooleanOperator_and = Core.Name "and"

_BinaryBooleanOperator_or = Core.Name "or"

_BinaryBooleanOperator_xor = Core.Name "xor"

data BinaryOperator =
  BinaryOperatorBoolean BinaryBooleanOperator |
  BinaryOperatorComparison ComparisonOperator |
  BinaryOperatorPower
  deriving (Eq, Ord, Read, Show)

_BinaryOperator = Core.Name "hydra.pg.query.BinaryOperator"

_BinaryOperator_boolean = Core.Name "boolean"

_BinaryOperator_comparison = Core.Name "comparison"

_BinaryOperator_power = Core.Name "power"

data Binding =
  Binding {
    bindingKey :: Variable,
    bindingValue :: Query}
  deriving (Eq, Ord, Read, Show)

_Binding = Core.Name "hydra.pg.query.Binding"

_Binding_key = Core.Name "key"

_Binding_value = Core.Name "value"

data ComparisonOperator =
  ComparisonOperatorEq  |
  ComparisonOperatorNeq  |
  ComparisonOperatorLt  |
  ComparisonOperatorLte  |
  ComparisonOperatorGt  |
  ComparisonOperatorGte
  deriving (Eq, Ord, Read, Show)

_ComparisonOperator = Core.Name "hydra.pg.query.ComparisonOperator"

_ComparisonOperator_eq = Core.Name "eq"

_ComparisonOperator_neq = Core.Name "neq"

_ComparisonOperator_lt = Core.Name "lt"

_ComparisonOperator_lte = Core.Name "lte"

_ComparisonOperator_gt = Core.Name "gt"

_ComparisonOperator_gte = Core.Name "gte"

data EdgeProjectionPattern =
  EdgeProjectionPattern {
    edgeProjectionPatternDirection :: Model.Direction,
    edgeProjectionPatternLabel :: (Maybe Model.EdgeLabel),
    edgeProjectionPatternProperties :: [PropertyPattern],
    edgeProjectionPatternVertex :: (Maybe VertexPattern)}
  deriving (Eq, Ord, Read, Show)

_EdgeProjectionPattern = Core.Name "hydra.pg.query.EdgeProjectionPattern"

_EdgeProjectionPattern_direction = Core.Name "direction"

_EdgeProjectionPattern_label = Core.Name "label"

_EdgeProjectionPattern_properties = Core.Name "properties"

_EdgeProjectionPattern_vertex = Core.Name "vertex"

data Expression =
  ExpressionAssociative AssociativeExpression |
  ExpressionBinary BinaryExpression |
  ExpressionProperty PropertyProjection |
  ExpressionUnary UnaryExpression |
  ExpressionVariable Variable |
  ExpressionVertex VertexPattern
  deriving (Eq, Ord, Read, Show)

_Expression = Core.Name "hydra.pg.query.Expression"

_Expression_associative = Core.Name "associative"

_Expression_binary = Core.Name "binary"

_Expression_property = Core.Name "property"

_Expression_unary = Core.Name "unary"

_Expression_variable = Core.Name "variable"

_Expression_vertex = Core.Name "vertex"

data LetQuery =
  LetQuery {
    letQueryBindings :: [Binding],
    letQueryEnvironment :: Query}
  deriving (Eq, Ord, Read, Show)

_LetQuery = Core.Name "hydra.pg.query.LetQuery"

_LetQuery_bindings = Core.Name "bindings"

_LetQuery_environment = Core.Name "environment"

data MatchQuery =
  MatchQuery {
    matchQueryOptional :: Bool,
    matchQueryPattern :: [Projection],
    matchQueryWhere :: (Maybe Expression)}
  deriving (Eq, Ord, Read, Show)

_MatchQuery = Core.Name "hydra.pg.query.MatchQuery"

_MatchQuery_optional = Core.Name "optional"

_MatchQuery_pattern = Core.Name "pattern"

_MatchQuery_where = Core.Name "where"

data Projection =
  Projection {
    projectionValue :: Expression,
    projectionAs :: (Maybe Variable)}
  deriving (Eq, Ord, Read, Show)

_Projection = Core.Name "hydra.pg.query.Projection"

_Projection_value = Core.Name "value"

_Projection_as = Core.Name "as"

data Projections =
  Projections {
    projectionsAll :: Bool,
    projectionsExplicit :: [Projection]}
  deriving (Eq, Ord, Read, Show)

_Projections = Core.Name "hydra.pg.query.Projections"

_Projections_all = Core.Name "all"

_Projections_explicit = Core.Name "explicit"

data PropertyPattern =
  PropertyPattern {
    propertyPatternKey :: Model.PropertyKey,
    propertyPatternValue :: PropertyValuePattern}
  deriving (Eq, Ord, Read, Show)

_PropertyPattern = Core.Name "hydra.pg.query.PropertyPattern"

_PropertyPattern_key = Core.Name "key"

_PropertyPattern_value = Core.Name "value"

data PropertyProjection =
  PropertyProjection {
    propertyProjectionBase :: Expression,
    propertyProjectionKey :: Model.PropertyKey}
  deriving (Eq, Ord, Read, Show)

_PropertyProjection = Core.Name "hydra.pg.query.PropertyProjection"

_PropertyProjection_base = Core.Name "base"

_PropertyProjection_key = Core.Name "key"

newtype PropertyValue =
  PropertyValue {
    unPropertyValue :: String}
  deriving (Eq, Ord, Read, Show)

_PropertyValue = Core.Name "hydra.pg.query.PropertyValue"

data PropertyValuePattern =
  PropertyValuePatternVariable Model.PropertyKey |
  PropertyValuePatternValue String
  deriving (Eq, Ord, Read, Show)

_PropertyValuePattern = Core.Name "hydra.pg.query.PropertyValuePattern"

_PropertyValuePattern_variable = Core.Name "variable"

_PropertyValuePattern_value = Core.Name "value"

data Query =
  QueryApplication ApplicationQuery |
  QueryAggregate AggregationQuery |
  QueryLetQuery LetQuery |
  QueryMatch MatchQuery |
  QuerySelect SelectQuery |
  QueryValue String
  deriving (Eq, Ord, Read, Show)

_Query = Core.Name "hydra.pg.query.Query"

_Query_application = Core.Name "application"

_Query_aggregate = Core.Name "aggregate"

_Query_LetQuery = Core.Name "LetQuery"

_Query_match = Core.Name "match"

_Query_select = Core.Name "select"

_Query_value = Core.Name "value"

data SelectQuery =
  SelectQuery {
    selectQueryDistinct :: Bool,
    selectQueryProjection :: Projections}
  deriving (Eq, Ord, Read, Show)

_SelectQuery = Core.Name "hydra.pg.query.SelectQuery"

_SelectQuery_distinct = Core.Name "distinct"

_SelectQuery_projection = Core.Name "projection"

data UnaryExpression =
  UnaryExpression {
    unaryExpressionOperator :: UnaryOperator,
    unaryExpressionOperand :: Expression}
  deriving (Eq, Ord, Read, Show)

_UnaryExpression = Core.Name "hydra.pg.query.UnaryExpression"

_UnaryExpression_operator = Core.Name "operator"

_UnaryExpression_operand = Core.Name "operand"

data UnaryOperator =
  UnaryOperatorNegate
  deriving (Eq, Ord, Read, Show)

_UnaryOperator = Core.Name "hydra.pg.query.UnaryOperator"

_UnaryOperator_negate = Core.Name "negate"

newtype Variable =
  Variable {
    unVariable :: String}
  deriving (Eq, Ord, Read, Show)

_Variable = Core.Name "hydra.pg.query.Variable"

data VertexPattern =
  VertexPattern {
    vertexPatternVariable :: (Maybe Variable),
    vertexPatternLabel :: (Maybe Model.VertexLabel),
    vertexPatternProperties :: [PropertyPattern],
    vertexPatternEdges :: [EdgeProjectionPattern]}
  deriving (Eq, Ord, Read, Show)

_VertexPattern = Core.Name "hydra.pg.query.VertexPattern"

_VertexPattern_variable = Core.Name "variable"

_VertexPattern_label = Core.Name "label"

_VertexPattern_properties = Core.Name "properties"

_VertexPattern_edges = Core.Name "edges"