owanturist / elm-graphql / GraphQL.Argument

Define GraphQL inputs in Elm

Primitives


type alias Argument =
Internal.Argument

Represents a GraphQL argument values.


type alias Value =
Json.Encode.Value

Represents a JavaScript value.

string : String -> Argument

Pass string argument into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asString", GraphQL.Argument.string "foo" )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(asString: "foo")
"""

int : Basics.Int -> Argument

Pass int argument into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asInt", GraphQL.Argument.int 1 )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(asInt: 1)
"""

float : Basics.Float -> Argument

Pass float argument into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asFloat", GraphQL.Argument.float 3.14 )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(asFloat: 3.14)
"""

bool : Basics.Bool -> Argument

Pass bool argument into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asBool", GraphQL.Argument.bool True )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(asBool: true)
"""

null : Argument

Pass null argument into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asNull", GraphQL.Argument.null )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(asNull: null)
"""

nullable : (a -> Argument) -> Maybe a -> Argument

Pass nullable argument into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asString", GraphQL.Argument.nullable GraphQL.Argument.string (Just "foo") )
    , ( "asNull", GraphQL.Argument.nullable GraphQL.Argument.string Nothing )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(
    asString: "foo",
    asNull: null
)
"""

Arrays

list : List Argument -> Argument

Pass list of arguments into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asInConsistentArray"
      , GraphQL.Argument.list
            [ GraphQL.Argument.string "foo"
            , GraphQL.Argument.int 0
            , GraphQL.Argument.list [ GraphQL.Argument.bool False ]
            ]
      )
    , ( "asConsistentArray"
      , GraphQL.Argument.list
            [ GraphQL.Argument.int 0
            , GraphQL.Argument.int 1
            , GraphQL.Argument.int 2
            ]
      )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(
    asInConsistentArray: ["foo", 0, [false]],
    asConsistentArray: [0, 1, 2]
)
"""

listOf : (a -> Argument) -> List a -> Argument

Pass list of specific arguments into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asArray"
      , GraphQL.Argument.listOf GraphQL.Argument.int [ 0, 1, 2 ]
      )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(
    asArray: [0, 1, 2]
)
"""

array : Array Argument -> Argument

Pass array of arguments into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asInConsistentArray"
      , GraphQL.Argument.array
            (Array.fromList
                [ GraphQL.Argument.string "foo"
                , GraphQL.Argument.int 0
                , GraphQL.Argument.array (Array.fromList [ GraphQL.Argument.bool False ])
                ]
            )
      )
    , ( "asConsistentArray"
      , GraphQL.Argument.array
            (Array.fromList
                [ GraphQL.Argument.int 0
                , GraphQL.Argument.int 1
                , GraphQL.Argument.int 2
                ]
            )
      )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(
    asInConsistentArray: ["foo", 0, [false]],
    asConsistentArray: [0, 1, 2]
)
"""

arrayOf : (a -> Argument) -> Array a -> Argument

Pass array of specific arguments into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asArray"
      , GraphQL.Argument.arrayOf GraphQL.Argument.int (Array.fromList [ 0, 1, 2 ])
      )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(
    asArray: [0, 1, 2]
)
"""

setOf : (a -> Argument) -> Set a -> Argument

Pass set of specific arguments into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asArray"
      , GraphQL.Argument.setOf GraphQL.Argument.int (Set.fromList [ 0, 2, 1, 0 ])
      )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(
    asArray: [0, 1, 2]
)
"""

Objects

object : List ( String, Argument ) -> Argument

Pass object of arguments into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asObject"
      , GraphQL.Argument.object
            [ ( "asString", GraphQL.Argument.string "foo" )
            , ( "asInt", GraphQL.Argument.int 1 )
            , ( "asFloat", GraphQL.Argument.float 3.14 )
            , ( "asBool", GraphQL.Argument.bool True )
            , ( "asNull", GraphQL.Argument.null )
            ]
      )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(asObject: {
    asString: "foo",
    asInt: 1,
    asFloat: 3.14,
    asBool: true,
    asNull: null
})
"""

dictOf : (k -> String) -> (v -> Argument) -> Dict k v -> Argument

Pass dict of arguments into a graph.

GraphQL.Selector.field "fieldName"
    [ ( "asObject"
      , GraphQL.Argument.dictOf
            String.fromInt
            GraphQL.Argument.string
            (Dict.fromList
                [ ( 2, "second" )
                , ( 1, "first" )
                , ( 3, "third" )
                ]
            )
      )
    ]
    GraphQL.Selector.int

Equals to:

"""
fieldName(asObject: {
    1: "first",
    2: "second",
    3: "third"
})
"""

Conversions

toValue : Argument -> Value

Convert Argument into Value.

GraphQL.Argument.toValue (GraphQL.Argument.string "hello") == Json.Encode.string "hello"

GraphQL.Argument.toValue (GraphQL.Argument.bool True) == Json.Encode.bool True

GraphQL.Argument.toValue GraphQL.Argument.null == Json.Encode.null

GraphQL.Argument.toValue (GraphQL.Argument.listOf GraphQL.Argument.int [ 0, 1, 2 ])
    == Json.Encode.listOf Json.Encode.int [ 0, 1, 2 ]