summaryrefslogtreecommitdiff
path: root/src/Language/GraphQL/Execute.hs
AgeCommit message (Collapse)Author
2024-01-08Release 1.2.0.2v1.2.0.2Eugen Wissner
2023-11-04Fix values not being coerced to listsMatei Adriel
2023-02-24Fix resolvers returning a list in the reverse orderEugen Wissner
2022-02-16enhance query errorsDmitrii Skurikhin
2022-01-07fix index position in error pathDmitrii Skurikhin
2021-09-05Deprecate unused functions from the old executorEugen Wissner
2021-09-03Replace the old executorEugen Wissner
2021-09-02Handle argument locationsEugen Wissner
2021-09-01Adjust value completion testsEugen Wissner
2021-08-31Show the value and expected type in value completion errorsEugen Wissner
2021-07-02Report subscription error locationsEugen Wissner
2021-06-24Fail with a location for result coercionEugen Wissner
The intermediate representation was further modified so that the operation definitions contain location information. Probably I should introduce a data type that generalizes fields and operations, so it contains object type, location and the selection set, so the functions don't accept so many arguments.
2021-05-11Remove unused QueryError.TransformationErrorEugen Wissner
2021-05-10Deprecate internal error generation functionsEugen Wissner
The functions generating errors in the executor should be changed anyway when we provide better error messages from the executor, with the error location and response path. So public definitions of these functions are deprecated now and they are replaced by more generic functions in the executor code.
2021-04-14Remove unused OverloadedStrings pragmasEugen Wissner
2020-09-28Validate arguments are definedEugen Wissner
2020-07-17Constrain base monad to MonadCatchEugen Wissner
Let's try MonadThrow/MonadCatch. It looks nice at a first glance. The monad transformer stack contains only the ReaderT, less lifts are required. Exception subtyping is easier, the user can (and should) define custom error types and throw them. And it is still possible to use pure error handling, if someone doesn't like runtime exceptions or need to run a query in a pure environment. Fixes #42.
2020-07-14Support subscriptionsEugen Wissner
This is experimental support. The implementation is based on conduit and is boring. There is a new resolver data constructor that should create a source event stream. The executor receives the events, pipes them through the normal execution and puts them into the response stream which is returned to the user. - Tests are missing. - The executor should check field value resolver on subscription types. - The graphql function should probably return (Either ResponseEventStream Response), but I'm not sure about this. It will make the usage more complicated if no subscriptions are involved, but with the current API implementing subscriptions is more difficult than it should be.
2020-07-11Parse subscriptionsEugen Wissner
2020-07-05Handle errors using custom typesEugen Wissner
Fixes #32.
2020-06-13Coerce resultEugen Wissner
Fixes #45.
2020-06-03Resolve abstract typesEugen Wissner
Objects that can be a part of an union or interface should return __typename as string.
2020-05-29Define resolvers on type fieldsEugen Wissner
Returning resolvers from other resolvers isn't supported anymore. Since we have a type system now, we define the resolvers in the object type fields and pass an object with the previous result to them.
2020-05-26Add Union and Interface type definitionsEugen Wissner
2020-05-25Split input/output types and values into 2 modulesEugen Wissner
2020-05-23Don't fail on invalid fragments and variablesEugen Wissner
2020-05-22Reject variables as default valuesEugen Wissner
2020-05-21Coerce variable valuesEugen Wissner
2020-05-14Add basic output object type supportEugen Wissner
2020-05-10Separate Query and Mutation resolversEugen Wissner
Fixes #33 .
2020-02-01Replace MonadIO constraint with just MonadEugen Wissner
And make the tests use Identity instead of IO.
2019-12-26Add definition moduleEugen Wissner
2019-12-07Move Transform to Language.GraphQL.ExecuteEugen Wissner
Language.GraphQL.AST.Transform is an internal module. Even though it works with the AST, it is a part of the execution process, it translates the original parser tree into a simpler one, so the executor has less work to do. Language.GraphQL.AST should contain only the parser and be independent from other packages, so it can be used on its own.
2019-11-16Rewrite selections into a Sequence. Fix #21Eugen Wissner
2019-08-30Deprecate Language.GraphQL.Execute.SchemaEugen Wissner
It is not a schema (at least not a complete one), but a resolver list, and the resolvers should be provided by the user separately, because the schema can originate from a GraphQL document. Schema name should be free to provide a data type for the real schema later.
2019-07-25Implement multiple operation supportEugen Wissner
2019-07-23Add singleError utility functionv0.4.0.0Eugen Wissner
2019-07-14Make all exports explicitEugen Wissner
2019-07-08Constrain the resolvers with MonadIOEugen Wissner
This replaces the most usages of MonadPlus, which is not appropriate for the resolvers, since a resolver is unambiguously chosen by the name (no need for 'mplus'), and the resolvers are often doing IO.
2019-07-07Change the main namespace to Language.GraphQLEugen Wissner