Commit Graph

639 Commits

Author SHA1 Message Date
Sunli
1e21e29fd9 Fix the problem that the fields of the list are not merged correctly.#345 2020-11-27 10:26:23 +08:00
Sunli
60974c47dc Fix #343 2020-11-23 12:43:31 +08:00
Sunli
8370001272 Implements Cow<T> for OutputValueType. #189 2020-11-08 09:22:50 +08:00
Sunli
631ec4bba0 Update docs. 2020-11-07 21:30:40 +08:00
Sunli
ad0798e8de Add TracingConfig for each request. #337 2020-11-07 21:23:22 +08:00
Koxiaet
9d94c933ff Don't duplicate type names in parsing error message 2020-11-07 06:05:59 +00:00
Sunli
66c6823a1c Export sdl for interface to implements another interface. #322 2020-11-07 08:49:08 +08:00
Sunli
b6d48fae91 Fix the problem that the resolver_utils::resolve_container function does not call the extensions. #336 2020-11-07 08:27:50 +08:00
Sunli
54d2154a18 Clippy clean 2020-11-07 08:24:17 +08:00
Sunli
05002c68cb Add Tracing::with_parent function. #337 2020-11-07 08:22:24 +08:00
Sunli
4c6adfa07f Fixed a bug that websocket could not push data in a situation. 2020-11-06 22:20:12 +08:00
Sunli
89ab0c799f Fix the problem of scalar macro. 2020-11-03 13:50:22 +08:00
Sunli
c1794dbacb Merge branch 'master' of https://github.com/async-graphql/async-graphql 2020-11-01 11:31:59 +08:00
Sunli
82333e49b9 Remove the validation of the content-type by the receive_batch_body function, because this is of little significance. #332 2020-11-01 11:31:54 +08:00
Hargobind S. Khalsa
0f495cd627 Validate the query hash before persisting queries 2020-10-31 13:53:53 -07:00
Sunli
5097832539 Fix #327. 2020-10-28 09:39:19 +08:00
Sunli
b124382e9c Add SchemaBuilder::override_description function. 2020-10-27 10:06:10 +08:00
Sunli
0ead4d99ba Add docs 2020-10-27 09:19:00 +08:00
Koxiaet
10d900a280 Rustfmt 2020-10-26 15:14:53 +00:00
Koxiaet
686f9bcff9
Merge pull request #324 from simplificAR/master
Modify interface SDL and bump Rocket
2020-10-26 15:13:26 +00:00
Daniel Wiesenberg
efd4ee61cb
Change interface SDL to adhere to spec
When only one interface is implemented, there is no &. The & is only to combine more than one interface.
2020-10-26 14:58:36 +01:00
Sunli
770ed31508 Add use_type_description attribute for derive macros Object, Scalar and Subscription. 2020-10-26 21:34:05 +08:00
Sunli
11e82e56e4 Improve performance 2020-10-24 08:59:35 +08:00
Koxiaet
c11374b785 Fix #323 2020-10-23 17:18:37 +01:00
Olexiy Buyanskyy
aff2751d36 removed not needed namespaces 2020-10-23 13:51:09 +03:00
Olexiy Buyanskyy
d0032c731f removed not needed namespaces 2020-10-23 13:49:00 +03: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
Sunli
055936f9ad Derive Serialize for Request and Deserialize for Response. 2020-10-23 08:26:48 +08: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
Sunli
c999dd26dd Fix typo 2020-10-22 10:11:47 +08:00
Sunli
8edd59ffdb Fix the problem that the Registry::create_dummy_type function may overwrite the keys of the registered type. #316 2020-10-20 19:55:10 +08:00
Sunli
776aadf169 Add entity lookup support for MergedObject.
Add some GraphQL specification constraints for all derived macros.

Use `Registry::create_dummy_type` to create a merged type.
2020-10-20 11:49:31 +08:00
Sunli
7510741311 Fix the bug that ʻExtension::prepare_request` cannot get the correct request data through the context.
Add test code for extension.
2020-10-18 11:24:16 +08:00
Koxiaet
807bad2a72 Fix macro hygiene 2020-10-16 20:21:46 +01:00
Koxiaet
68381cfc65 Make macros hygienic 2020-10-16 11:37:59 +01:00
Koxiaet
db312a372d Replace futures with futures_util 2020-10-16 07:49:22 +01:00
Koxiaet
1b38ec46e0 Reduce code duplication in container resolver 2020-10-16 07:12:21 +01:00
Koxiaet
4e562a86a7 Avoid locking extensions mutex when possible 2020-10-16 06:52:52 +01:00
Koxiaet
a48953899c Remove itertools dependency 2020-10-16 06:37:48 +01:00
Sunli
f8905ff629 Update readme 2020-10-16 09:21:16 +08:00
Koxiaet
5c47f1ec57 Require POST for GraphQL requests 2020-10-15 18:42:09 +01:00
Koxiaet
2756c2cd5b Require JSON content-type 2020-10-15 18:30:16 +01:00
Sunli
985ee939d4 Add Schema::names function. 2020-10-15 19:36:54 +08:00
Koxiaet
0683b5a6be Support GET requests in actix-web integration 2020-10-15 10:33:38 +01:00
Sunli
03b276fe7e Fix a small bug. 2020-10-15 16:45:33 +08:00
Koxiaet
725156eda4 Rustfmt 2020-10-15 07:39:53 +01:00
Koxiaet
d34ac0ba08 Make imports consistent 2020-10-15 07:38:10 +01: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
b331681fe1 2.0.2 2020-10-14 11:11:52 +08:00
Sunli
53ef84c5e3 Fix a bug in the validator. 2020-10-14 10:54:46 +08:00
Sunli
184f8b169d Update docs 2020-10-13 10:19:30 +08:00
Sunli
8b1ddcdc0b Add scalar macro. 2020-10-12 21:06:06 +08:00
Sunli
6dd9483762 Improve performance 2020-10-12 14:49:32 +08:00
Sunli
64e85b33c3 All merged objects will no longer be removed. #308 2020-10-12 11:04:01 +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
Aurelien Foucault
dff328a85c Add eq for errors 2020-10-08 15:32:37 +02:00
Sunli
299a40bc4e Update docs. 2020-10-07 13:40:03 +08:00
AurelienFT
e7b4ad8f2f
Rework guard (#296)
Rework guard #293
2020-10-06 17:16:51 +08:00
Sunli
e47360d1a2 Fix typo. #297 2020-10-04 07:49:56 +08:00
Sunli
e263c755e2 Restore the original error extension implementation. 2020-10-02 14:56:10 +08:00
sunli
8aa406575b Remove useless code. 2020-10-01 18:48:11 +08:00
Sunli
f33ab0af01 Inline ContainerType, EnumType, ScalarType to docs. 2020-10-01 10:05:16 +08:00
Sunli
19f05597e0 Merge master 2020-10-01 09:40:04 +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
b61088089b Fix compilation and tests 2020-09-30 19:40:17 +01: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
fd4c2b193b Added Apollo persisted queries extension. #280 2020-09-30 11:37:12 +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
af2e480b70 Added context for Extension. 2020-09-29 20:47:37 +08: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
3f654127b8 Clippy clean. 2020-09-27 19:29:23 +08:00
Sunli
4bbb30b2ae Update schema.rs 2020-09-27 19:13:12 +08:00
Sunli
bf42c4e915 Fixed variables cannot deserialize from null. #282 2020-09-27 19:10:49 +08:00
Sunli
e9efad4479 Fix the problem when generating Federation SDL. #283 2020-09-27 18:49:04 +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
9333583483 Improve the error message of Tracing extension. 2020-09-26 12:35:28 +08:00
Sunli
e44cb6886f Update readme 2020-09-26 11:25:21 +08:00
Sunli
f4df7d57f8 When an error occurs in the query, the Tracing extension can output the error message. 2020-09-26 09:49:46 +08:00
Sunli
2ac69e2e29 Add StringNumber type. 2020-09-26 09:22:54 +08:00
Sunli
1cab6d0186 Remove unnecessary features for tide and warp integrations. 2020-09-26 08:35:17 +08:00
Koxiaet
38c9c718d6 Reduce code duplication in batches in actix web 2020-09-25 17:38:12 +01:00
Sunli
2c693e1245 Make uuid to optional dependent. 2020-09-25 15:40:04 +08:00
Sunli
68965e5a0c Add data_XXX methods to ResolveInfo and remove context field from ResolveInfo. #260 2020-09-25 15:26:29 +08:00
Sunli
09eea044eb Improve tracing 2020-09-25 15:01:55 +08:00
Sunli
3d749f329f
Merge pull request #275 from simplificAR/export_description
Export description with `Registry::export_sdl`
2020-09-24 09:21:47 +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
Koxiaet
7f35fbca4c Big improvements to tide integration 2020-09-23 18:30:03 +01:00
Daniel Wiesenberg
225f46d180
Run Rustfmt and Clippy 2020-09-23 15:54:33 +02:00
Daniel Wiesenberg
7b53e856e0
Export description with Registry::export_sdl 2020-09-23 15:47:04 +02:00
Sunli
e3125b2d2d Add Schema::sdl method. #191 2020-09-23 14:14:22 +08:00
Koxiaet
203ea4ad64 Merge branch 'master' of github.com-koxiaet:async-graphql/async-graphql into master 2020-09-22 20:03:33 +01:00
Koxiaet
0880be3e0b Move some validations to parser
This commit moves the single anonymous and duplicated operation name
validation rules into the parser, allowing for a nicer format to be
exposed by it. It also adds better error messages to the parser.
2020-09-22 19:59:48 +01:00
Sunli
fa10a55745 Add Request::extension method. #271 2020-09-21 15:53:07 +08:00
Sunli
0259a35782 Implement Serialize/Deserialize for MaybeUndefine<T>. 2020-09-21 15:22:45 +08:00
Sunli
37e21c54fa Add BatchRequest support for actixweb and warp integrations. 2020-09-21 14:57:33 +08:00
Sunli
559e7c41b3
Merge pull request #272 from mwilliammyers/feat/maybe-undefined
Remove Deserialize impl from MaybeUndefined
2020-09-21 07:56:47 +08:00
William Myers
90b2cfdaea
Remove Deserialize impl from MaybeUndefined
Change Serialize implementation to use the `untagged` attribute.
This handles the common case of directly serializing `MaybeUndefined`,
but deserializing into an `Option<T>`. We could add a more sophisticated
custom deserialize implementation later.
2020-09-20 13:22:51 -07: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
Sunli
707b8e5930 Merge branch 'master' of https://github.com/async-graphql/async-graphql 2020-09-20 13:28:25 +08:00
Sunli
5bfb992ad7 Fix enum strings in query variables are not converted to proper enums. #270 2020-09-20 13:28:18 +08:00
William Myers
d3f5c56c6d
Add more trait implementations to MaybeUndefined
Closes #267
2020-09-19 14:10:54 -07: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
b0690cae8b Fix compiling without features 2020-09-18 15:14:40 +08: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
Koxiaet
3c04411780 Remove code duplication for batch requests 2020-09-17 19:43:03 +01:00
Koxiaet
5cf527aeef Merge branch 'master' of github.com-koxiaet:async-graphql/async-graphql into master 2020-09-17 19:23:15 +01:00
Koxiaet
88be6bca61 Improve websockets 2020-09-17 19:22:54 +01:00
Sunli
acc1a6f515 Add support for batch queries. 2020-09-17 19:54:12 +08:00
Sunli
de3f0937b0 Some improvements. 2020-09-17 11:22:09 +08:00
Sunli
dc77e7f262 Update docs 2020-09-17 09:03:36 +08:00
Sunli
c3d70b0553 Add test for ErrorExtensions. 2020-09-17 08:47:41 +08:00
Koxiaet
f82322045e Document features 2020-09-15 19:32:13 +01:00
Sunli
509c92a11f Move http::websocket::create and http::websocket::create_with_initializer function to http::WebSocketStream. 2020-09-15 20:07:59 +08:00
Sunli
ba03ccf3ea Rework websocket
a
2020-09-15 11:49:07 +08:00
Sunli
059128e9c5 http::websocket::create function now returns the WebSocketStream type. 2020-09-15 11:19:00 +08:00
Sunli
d6eea10816 Remove InputObjectType and add InputValueType/OutputValueType to docs 2020-09-15 09:31:55 +08:00
Koxiaet
84be87aab6 Rustfmt 2020-09-14 20:20:15 +01:00
Koxiaet
91f059f9ee Fix compiling without features 2020-09-14 20:16:41 +01:00
Koxiaet
fbcae8aa29 Improved serialize_resp 2020-09-14 19:56:12 +01:00
Koxiaet
a86c3a86b8 Remove and feature-gate dependencies 2020-09-14 19:38:41 +01:00
Sunli
3233f3638c Implement Type for more stdlib collection types #189
Implement InputValueType/OutputValueType for HashSet<T>/BTreeSet<T>/VecDeque<T>/LinkedList<T>
Implement ScalarType for char/NonZero*/HashMap<String,T>/BTreeMap<String, T>
2020-09-14 20:06:44 +08:00
Sunli
fad20a80e9 Update README.md 2020-09-14 14:13:43 +08:00
Sunli
6e3dc9721b Improve websocket 2020-09-14 10:44:56 +08:00
Sunli
134ef7ad56 Fix the problem that the compilation fails when the compilation parameter is --no-default-features.
Update mod.rs
2020-09-14 09:54:55 +08:00
Sunli
d67a511a07 2.0.0-alpha.5 2020-09-14 09:46:22 +08:00
Sunli
bbcfade50e Improve registry 2020-09-14 08:37:15 +08:00
Sunli
ae46e91b08 Remove unnecessary memory allocation in websocket. 2020-09-14 08:25:00 +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
Koxiaet
91ec3486ce Support !Unpin in receive_body with pin project 2020-09-13 11:49:07 +01:00
Koxiaet
863d57a4b0 Remove SimpleBroker 2020-09-13 10:47:28 +01:00
Koxiaet
f204841d1f Restructure types module 2020-09-13 10:38:19 +01:00
Koxiaet
1af9ce5b95 Remove unused idx parameter on subscription 2020-09-13 08:13:56 +01:00