Add operation type encoder

This commit is contained in:
Eugen Wissner 2022-10-02 11:38:53 +02:00
parent 2321d1a1bc
commit bf2e4925b4
Signed by: belka
GPG Key ID: A27FDC1E8EE902C0
3 changed files with 16 additions and 1 deletions

View File

@ -16,6 +16,9 @@ and this project adheres to
- `Language.GraphQL`: Added information about the *json* flag and switching to
*graphql-spice* for JSON support.
### Added
- Partial schema printing: operation type encoder.
## [1.0.3.0] - 2022-03-27
### Fixed
- Index position in error path. (Index and Segment paths of a field have been

View File

@ -11,6 +11,7 @@ module Language.GraphQL.AST.Encoder
, directive
, document
, minified
, operationType
, pretty
, type'
, value
@ -34,7 +35,7 @@ import qualified Language.GraphQL.AST.Document as Full
-- Use 'pretty' or 'minified' to construct the formatter.
data Formatter
= Minified
| Pretty Word
| Pretty !Word
-- | Constructs a formatter for pretty printing.
pretty :: Formatter
@ -294,6 +295,12 @@ nonNullType :: Full.NonNullType -> Lazy.Text
nonNullType (Full.NonNullTypeNamed x) = Lazy.Text.fromStrict x <> "!"
nonNullType (Full.NonNullTypeList x) = listType x <> "!"
-- | Produces lowercase operation type: query, mutation or subscription.
operationType :: Formatter -> Full.OperationType -> Lazy.Text
operationType _formatter Full.Query = "query"
operationType _formatter Full.Mutation = "mutation"
operationType _formatter Full.Subscription = "subscription"
-- * Internal
between :: Char -> Char -> Lazy.Text -> Lazy.Text

View File

@ -173,3 +173,8 @@ spec = do
|] '\n'
actual = definition pretty operation
in actual `shouldBe` expected
describe "operationType" $
it "produces lowercase mutation operation type" $
let actual = operationType pretty Full.Mutation
in actual `shouldBe` "mutation"