<feed xmlns='http://www.w3.org/2005/Atom'>
<title>graphql/src/Language/GraphQL/Execute/Subscribe.hs, branch v1.4.0.0</title>
<subtitle>GraphQL implementation in Haskell.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/'/>
<entry>
<title>Replace the old executor</title>
<updated>2021-09-03T20:47:49+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2021-09-03T20:47:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=b96d75f447ddfdea4a4788126f4b4d002672d858'/>
<id>b96d75f447ddfdea4a4788126f4b4d002672d858</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Report subscription error locations</title>
<updated>2021-07-02T07:28:03+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2021-07-02T07:28:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=b99bb722722b8d7a40445a3e8af7b6b3f09cf770'/>
<id>b99bb722722b8d7a40445a3e8af7b6b3f09cf770</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fail with a location for result coercion</title>
<updated>2021-06-24T07:29:24+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2021-06-24T07:29:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=96bb061666aad7778d5f03c3f999aa79133d099b'/>
<id>96bb061666aad7778d5f03c3f999aa79133d099b</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Provide locations for argument errors</title>
<updated>2021-06-22T07:13:27+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2021-06-22T07:13:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=812f6967d40cfd1d1c0af5512496ff7b7cb0f6ae'/>
<id>812f6967d40cfd1d1c0af5512496ff7b7cb0f6ae</id>
<content type='text'>
The executor still doesn't give an error per argument, but a single
error per field with locations for all arguments.
If a non-null argument isn't specified, only the error location of the
field is given. If some arguments cannot be coerced, only the locations
of these arguments are given, non-null arguments are ignored. This
should still be improved, so the executor returns all errors at once.
The transformation tree is changed, so that argument map contains
locations of the arguments (but not the locations of the argument values
yet).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The executor still doesn't give an error per argument, but a single
error per field with locations for all arguments.
If a non-null argument isn't specified, only the error location of the
field is given. If some arguments cannot be coerced, only the locations
of these arguments are given, non-null arguments are ignored. This
should still be improved, so the executor returns all errors at once.
The transformation tree is changed, so that argument map contains
locations of the arguments (but not the locations of the argument values
yet).
</pre>
</div>
</content>
</entry>
<entry>
<title>Add location information to the intermediate tree</title>
<updated>2021-05-12T04:51:59+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2021-05-12T04:51:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=1b7cd85216e58650552e690be81fb46bea2d88ab'/>
<id>1b7cd85216e58650552e690be81fb46bea2d88ab</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove unused QueryError.TransformationError</title>
<updated>2021-05-11T05:11:47+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2021-05-11T05:11:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=f671645043b8d9e148ed96c3a26aa268ef0ff7b5'/>
<id>f671645043b8d9e148ed96c3a26aa268ef0ff7b5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Deprecate internal error generation functions</title>
<updated>2021-05-10T07:43:39+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2021-05-10T07:43:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=1af95345d21ecfaa0823cc5343d2ccc83c89d449'/>
<id>1af95345d21ecfaa0823cc5343d2ccc83c89d449</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Replace Map with OrderedMap</title>
<updated>2021-02-19T07:09:04+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2021-02-19T07:09:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=10e4d64052aabbbe3fd82daf83138723ae4af3b6'/>
<id>10e4d64052aabbbe3fd82daf83138723ae4af3b6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Constrain base monad to MonadCatch</title>
<updated>2020-07-17T05:05:03+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2020-07-17T05:05:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=09135c581aaae471f7d964bc2a3a141bef299097'/>
<id>09135c581aaae471f7d964bc2a3a141bef299097</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Support subscriptions</title>
<updated>2020-07-14T17:37:56+00:00</updated>
<author>
<name>Eugen Wissner</name>
<email>belka@caraus.de</email>
</author>
<published>2020-07-14T17:37:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.caraus.tech/graphql/commit/?id=ae2210f6598f166116abebc1163e1523d3bc627c'/>
<id>ae2210f6598f166116abebc1163e1523d3bc627c</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
</feed>
