mirror of
https://github.com/Airsequel/AirGQL.git
synced 2025-07-11 09:24:55 +03:00
47 lines
940 B
Haskell
47 lines
940 B
Haskell
{-|
|
|
Increase readability of code
|
|
by wrapping `graphql` library with descriptive wrappers
|
|
-}
|
|
module AirGQL.GQLWrapper (
|
|
OutField (..),
|
|
outFieldToField,
|
|
InArgument (..),
|
|
inArgumentToArgument,
|
|
)
|
|
where
|
|
|
|
import Protolude (Maybe, Text)
|
|
|
|
import Language.GraphQL.Type (Value)
|
|
import Language.GraphQL.Type.In qualified as In
|
|
import Language.GraphQL.Type.Out qualified as Out
|
|
|
|
|
|
data OutField m = OutField
|
|
{ descriptionMb :: Maybe Text
|
|
, fieldType :: Out.Type m
|
|
, arguments :: In.Arguments
|
|
}
|
|
|
|
|
|
outFieldToField :: OutField m -> Out.Field m
|
|
outFieldToField outField =
|
|
Out.Field
|
|
outField.descriptionMb
|
|
outField.fieldType
|
|
outField.arguments
|
|
|
|
|
|
data InArgument = InArgument
|
|
{ argDescMb :: Maybe Text
|
|
, argType :: In.Type
|
|
, valueMb :: Maybe Value
|
|
}
|
|
|
|
|
|
inArgumentToArgument :: InArgument -> In.Argument
|
|
inArgumentToArgument inArgument =
|
|
In.Argument
|
|
inArgument.argDescMb
|
|
inArgument.argType
|
|
inArgument.valueMb
|