Commit Graph

194 Commits

Author SHA1 Message Date
Sunli 03f6ed4ba2 Rename InputValueType to InputType and OutputValueType to OutputType. 2020-12-11 15:37:50 +08:00
Sunli 631ec4bba0 Update docs. 2020-11-07 21:30:40 +08:00
Sunli 0ead4d99ba Add docs 2020-10-27 09:19:00 +08:00
Sunli 770ed31508 Add `use_type_description` attribute for derive macros Object, Scalar and Subscription. 2020-10-26 21:34:05 +08:00
Olexiy Buyanskyy 1ea5958d87 Fixed redundant_closure_for_method_calls
https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls
2020-10-23 11:10:00 +03:00
Olexiy Buyanskyy 8b5de7db6a Collected all clippy warnings and fixed 2
https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string
https://rust-lang.github.io/rust-clippy/master/index.html#match_wildcard_for_single_variants

Please change `allow` -> `deny` ub src/lib.rs to see other warnings. I feel some of them are important
2020-10-22 09:38:35 +03:00
Koxiaet db312a372d Replace futures with futures_util 2020-10-16 07:49:22 +01:00
Sunli f8905ff629 Update readme 2020-10-16 09:21:16 +08:00
Koxiaet 6dca9e57f1 Rustfmt 2020-10-15 06:56:17 +01:00
Koxiaet ccae2d4ef5 Clean up crate root and improve context 2020-10-15 06:55:30 +01:00
Sunli b054f1bf9f Fix can no longer derive Union for union types with lifetimes. #311 2020-10-15 08:53:17 +08:00
Sunli bc5cf2f2a2 Configurable case conversion. 2020-10-14 19:16:10 +08:00
Sunli 184f8b169d Update docs 2020-10-13 10:19:30 +08:00
Sunli b0ceb58163 Use `value!` instead of `serde_json::json!`. 2020-10-12 10:17:05 +08:00
Sunli a575c9fe1e Add value! macro. 2020-10-12 09:28:51 +08:00
Sunli 2ca10e0ded Add `parse_value` and `from_value` funcntions. 2020-10-11 20:24:31 +08:00
Sunli 10cd868f4c Some improvements. 2020-10-10 16:28:07 +08:00
AurelienFT e7b4ad8f2f
Rework guard (#296)
Rework guard #293
2020-10-06 17:16:51 +08:00
Sunli e263c755e2 Restore the original error extension implementation. 2020-10-02 14:56:10 +08:00
Sunli f33ab0af01 Inline ContainerType, EnumType, ScalarType to docs. 2020-10-01 10:05:16 +08:00
Sunli 1e30712726 Merge branch 'master' into rework-errors 2020-10-01 09:39:47 +08:00
Sunli e6108352b9 Merge branch 'master' into rework-errors 2020-10-01 09:07:19 +08:00
Koxiaet ab82460b81 Merge master 2020-09-30 18:24:24 +01:00
Sunli 28cd37115f Update docs. 2020-09-30 11:55:56 +08:00
Sunli 6492629e71 Improve trait for GraphQL types. 2020-09-30 07:45:48 +08:00
Koxiaet 2ddaaaa07f Rework errors
This completely overhauls the error system used in async-graphql.
- `Error` has been renamed to `ServerError` and `FieldError` has been
renamed to just `Error`. This is because `FieldError` is by far the most
common error that users will have to use so it makes sense to use the
most obvious error name. Also, the current name didn't make sense as it
was used for things other than field errors, such as the data callback
for websockets.
- `ServerError` has been made completely opaque. Before it was an enum
of all the possible errors, but now it just contains an error message,
the locations, the path and extensions. It is a shame that we lose
information, it makes more sense as _conceptually_ GraphQL does not
provide that information. It also frees us to change the internals of
async-graphql a lot more.
- The path of errors is no longer an opaque JSON value but a regular
type, `Vec<PathSegment>`. The type duplication of `PathSegment` and
`QueryPathSegment` is unfortunate, I plan to work on this in the future.
- Now that `ServerError` is opaque, `RuleError` has been removed from
the public API, making it simpler.
- Additionally `QueryError` has been completely removed. Instead the
error messages are constructed ad-hoc; I took care to never repeat an
error message.
- Instead of constructing field-not-found errors inside the
implementations of field resolvers they now return `Option`s, where a
`None` value is representative of the field not being found.
- As an unfortunate consequence of the last change, self-referential
types based on the output of a subscription resolver can no longer be
created. This does not mean anything for users, but causes lifetime
issues in the implementation of merged objects. I fixed it with a bit of
a hack, but this'll have to be looked into further.
- `InputValueError` now has a generic parameter - it's kind of weird but
it's necessary for ergonomics. It also improves error messages.
- The `ErrorExtensions` trait has been removed. I didn't think the
`extend` method was necessary since `From` impls exist. But the
ergonomics are still there with a new trait `ExtendError`, which
is implemented for both errors and results.
- `Response` now supports serializing multiple errors. This allows for
nice things like having multiple validation errors not be awkwardly
shoved into a single error.
- When an error occurs in execution, data is sent as `null`. This is
slightly more compliant with the spec but the algorithm described in
<https://spec.graphql.org/June2018/#sec-Errors-and-Non-Nullability> has
yet to be implemented.
2020-09-29 20:06:44 +01:00
Sunli 8c5d8f0324 Rework async-graphql-derive. #288 2020-09-29 16:06:10 +08:00
Sunli 884bf77087 Update docs 2020-09-28 11:15:37 +08:00
Sunli 397650bb0d Update docs 2020-09-27 18:22:01 +08:00
Sunli 17240f1fed Add some type detection to make the defined schema conform to the GraphQL specification. #282 2020-09-27 15:35:05 +08:00
Sunli 9b4fc7d922 Make Object and Subscription macros support `#cfg(...)` attribute. #281 2020-09-27 10:20:20 +08:00
Sunli 39f8a4fa17 Invoke extensions for execute_schema. 2020-09-26 15:52:59 +08:00
Sunli e44cb6886f Update readme 2020-09-26 11:25:21 +08:00
Sunli 2c693e1245 Make `uuid` to optional dependent. 2020-09-25 15:40:04 +08:00
Koxiaet b871be2731 Rustfmt and write ARCHITECTURE.md 2020-09-23 20:23:15 +01:00
Koxiaet 635a1a5ed7 Publicize resolver utils and move Scalar there 2020-09-23 19:50:35 +01:00
Sunli e21fe02cac Make ObjectType is public. 2020-09-20 15:47:17 +08:00
Sunli 7bb67f135e Fix docs 2020-09-20 13:34:49 +08:00
Koxiaet f873c9ac5a Warp: Replace `BoxedFilter` with `impl Filter` 2020-09-19 18:10:46 +01:00
Koxiaet ec49d4ec56 Reexport async-graphql-parser 2020-09-19 06:14:59 +01:00
Sunli 019241ac22 2.0.0-alpha.12 2020-09-18 15:05:07 +08:00
Sunli c98b269e50 Add Upload::into_async_read with blocking 2020-09-18 14:32:00 +08:00
Sunli 322e296a24 Remove the GQL prefix of all macros. #208 2020-09-18 09:10:24 +08:00
Sunli acc1a6f515 Add support for batch queries. 2020-09-17 19:54:12 +08:00
Sunli dc77e7f262 Update docs 2020-09-17 09:03:36 +08:00
Koxiaet f82322045e Document features 2020-09-15 19:32:13 +01:00
Sunli d6eea10816 Remove InputObjectType and add InputValueType/OutputValueType to docs 2020-09-15 09:31:55 +08:00
Sunli fad20a80e9 Update README.md 2020-09-14 14:13:43 +08:00
Sunli d67a511a07 2.0.0-alpha.5 2020-09-14 09:46:22 +08:00
Koxiaet d404e756bc Rework subscriptions
The main change in this commit is changing the return type of
SubscriptionType::create_stream from
Future<Result<Stream<Result<Response>>>> to just Stream<Result<Json>>. I
also allowed the returned stream to borrow from self and context.
2020-09-13 18:52:36 +01:00