packages feed

hydra-0.13.0: src/gen-main/haskell/Hydra/Encode/Query.hs

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

-- | Term encoders for hydra.query

module Hydra.Encode.Query where

import qualified Hydra.Core as Core
import qualified Hydra.Encode.Core as Core_
import qualified Hydra.Lib.Lists as Lists
import qualified Hydra.Lib.Maybes as Maybes
import qualified Hydra.Query as Query
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.ByteString as B
import qualified Data.Int as I
import qualified Data.List as L
import qualified Data.Map as M
import qualified Data.Set as S

comparisonConstraint :: (Query.ComparisonConstraint -> Core.Term)
comparisonConstraint x = case x of
  Query.ComparisonConstraintEqual -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.ComparisonConstraint"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "equal"),
      Core.fieldTerm = Core.TermUnit}}))
  Query.ComparisonConstraintNotEqual -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.ComparisonConstraint"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "notEqual"),
      Core.fieldTerm = Core.TermUnit}}))
  Query.ComparisonConstraintLessThan -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.ComparisonConstraint"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "lessThan"),
      Core.fieldTerm = Core.TermUnit}}))
  Query.ComparisonConstraintGreaterThan -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.ComparisonConstraint"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "greaterThan"),
      Core.fieldTerm = Core.TermUnit}}))
  Query.ComparisonConstraintLessThanOrEqual -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.ComparisonConstraint"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "lessThanOrEqual"),
      Core.fieldTerm = Core.TermUnit}}))
  Query.ComparisonConstraintGreaterThanOrEqual -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.ComparisonConstraint"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "greaterThanOrEqual"),
      Core.fieldTerm = Core.TermUnit}}))

edge :: (Query.Edge -> Core.Term)
edge x = (Core.TermRecord (Core.Record {
  Core.recordTypeName = (Core.Name "hydra.query.Edge"),
  Core.recordFields = [
    Core.Field {
      Core.fieldName = (Core.Name "type"),
      Core.fieldTerm = (Core_.name (Query.edgeType x))},
    Core.Field {
      Core.fieldName = (Core.Name "out"),
      Core.fieldTerm = ((\opt -> Core.TermMaybe (Maybes.map Core_.name opt)) (Query.edgeOut x))},
    Core.Field {
      Core.fieldName = (Core.Name "in"),
      Core.fieldTerm = ((\opt -> Core.TermMaybe (Maybes.map Core_.name opt)) (Query.edgeIn x))}]}))

graphPattern :: (Query.GraphPattern -> Core.Term)
graphPattern x = (Core.TermRecord (Core.Record {
  Core.recordTypeName = (Core.Name "hydra.query.GraphPattern"),
  Core.recordFields = [
    Core.Field {
      Core.fieldName = (Core.Name "graph"),
      Core.fieldTerm = (Core_.name (Query.graphPatternGraph x))},
    Core.Field {
      Core.fieldName = (Core.Name "patterns"),
      Core.fieldTerm = ((\xs -> Core.TermList (Lists.map pattern xs)) (Query.graphPatternPatterns x))}]}))

node :: (Query.Node -> Core.Term)
node x = case x of
  Query.NodeTerm v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Node"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "term"),
      Core.fieldTerm = (Core_.term v1)}}))
  Query.NodeVariable v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Node"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "variable"),
      Core.fieldTerm = (variable v1)}}))
  Query.NodeWildcard -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Node"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "wildcard"),
      Core.fieldTerm = Core.TermUnit}}))

path :: (Query.Path -> Core.Term)
path x = case x of
  Query.PathStep v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Path"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "step"),
      Core.fieldTerm = (step v1)}}))
  Query.PathRegex v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Path"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "regex"),
      Core.fieldTerm = (regexSequence v1)}}))
  Query.PathInverse v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Path"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "inverse"),
      Core.fieldTerm = (path v1)}}))

pattern :: (Query.Pattern -> Core.Term)
pattern x = case x of
  Query.PatternTriple v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Pattern"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "triple"),
      Core.fieldTerm = (triplePattern v1)}}))
  Query.PatternNegation v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Pattern"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "negation"),
      Core.fieldTerm = (pattern v1)}}))
  Query.PatternConjunction v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Pattern"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "conjunction"),
      Core.fieldTerm = (Core.TermList (Lists.map pattern v1))}}))
  Query.PatternDisjunction v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Pattern"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "disjunction"),
      Core.fieldTerm = (Core.TermList (Lists.map pattern v1))}}))
  Query.PatternGraph v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Pattern"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "graph"),
      Core.fieldTerm = (graphPattern v1)}}))

query :: (Query.Query -> Core.Term)
query x = (Core.TermRecord (Core.Record {
  Core.recordTypeName = (Core.Name "hydra.query.Query"),
  Core.recordFields = [
    Core.Field {
      Core.fieldName = (Core.Name "variables"),
      Core.fieldTerm = ((\xs -> Core.TermList (Lists.map variable xs)) (Query.queryVariables x))},
    Core.Field {
      Core.fieldName = (Core.Name "patterns"),
      Core.fieldTerm = ((\xs -> Core.TermList (Lists.map pattern xs)) (Query.queryPatterns x))}]}))

range :: (Query.Range -> Core.Term)
range x = (Core.TermRecord (Core.Record {
  Core.recordTypeName = (Core.Name "hydra.query.Range"),
  Core.recordFields = [
    Core.Field {
      Core.fieldName = (Core.Name "min"),
      Core.fieldTerm = ((\x -> Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 x))) (Query.rangeMin x))},
    Core.Field {
      Core.fieldName = (Core.Name "max"),
      Core.fieldTerm = ((\x -> Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 x))) (Query.rangeMax x))}]}))

regexQuantifier :: (Query.RegexQuantifier -> Core.Term)
regexQuantifier x = case x of
  Query.RegexQuantifierOne -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.RegexQuantifier"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "one"),
      Core.fieldTerm = Core.TermUnit}}))
  Query.RegexQuantifierZeroOrOne -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.RegexQuantifier"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "zeroOrOne"),
      Core.fieldTerm = Core.TermUnit}}))
  Query.RegexQuantifierZeroOrMore -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.RegexQuantifier"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "zeroOrMore"),
      Core.fieldTerm = Core.TermUnit}}))
  Query.RegexQuantifierOneOrMore -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.RegexQuantifier"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "oneOrMore"),
      Core.fieldTerm = Core.TermUnit}}))
  Query.RegexQuantifierExactly v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.RegexQuantifier"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "exactly"),
      Core.fieldTerm = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 v1)))}}))
  Query.RegexQuantifierAtLeast v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.RegexQuantifier"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "atLeast"),
      Core.fieldTerm = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 v1)))}}))
  Query.RegexQuantifierRange v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.RegexQuantifier"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "range"),
      Core.fieldTerm = (range v1)}}))

regexSequence :: (Query.RegexSequence -> Core.Term)
regexSequence x = (Core.TermRecord (Core.Record {
  Core.recordTypeName = (Core.Name "hydra.query.RegexSequence"),
  Core.recordFields = [
    Core.Field {
      Core.fieldName = (Core.Name "path"),
      Core.fieldTerm = (path (Query.regexSequencePath x))},
    Core.Field {
      Core.fieldName = (Core.Name "quantifier"),
      Core.fieldTerm = (regexQuantifier (Query.regexSequenceQuantifier x))}]}))

step :: (Query.Step -> Core.Term)
step x = case x of
  Query.StepEdge v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Step"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "edge"),
      Core.fieldTerm = (edge v1)}}))
  Query.StepProject v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Step"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "project"),
      Core.fieldTerm = (Core_.projection v1)}}))
  Query.StepCompare v1 -> (Core.TermUnion (Core.Injection {
    Core.injectionTypeName = (Core.Name "hydra.query.Step"),
    Core.injectionField = Core.Field {
      Core.fieldName = (Core.Name "compare"),
      Core.fieldTerm = (comparisonConstraint v1)}}))

triplePattern :: (Query.TriplePattern -> Core.Term)
triplePattern x = (Core.TermRecord (Core.Record {
  Core.recordTypeName = (Core.Name "hydra.query.TriplePattern"),
  Core.recordFields = [
    Core.Field {
      Core.fieldName = (Core.Name "subject"),
      Core.fieldTerm = (node (Query.triplePatternSubject x))},
    Core.Field {
      Core.fieldName = (Core.Name "predicate"),
      Core.fieldTerm = (path (Query.triplePatternPredicate x))},
    Core.Field {
      Core.fieldName = (Core.Name "object"),
      Core.fieldTerm = (node (Query.triplePatternObject x))}]}))

variable :: (Query.Variable -> Core.Term)
variable x = (Core.TermWrap (Core.WrappedTerm {
  Core.wrappedTermTypeName = (Core.Name "hydra.query.Variable"),
  Core.wrappedTermBody = ((\x -> Core.TermLiteral (Core.LiteralString x)) (Query.unVariable x))}))