@@ -255,6 +255,118 @@ macro_rules! graphql_interface {
255
255
}
256
256
}
257
257
) ;
258
+
259
+ $crate:: __juniper_impl_trait!(
260
+ impl <$( $scalar) * $( , $lifetimes) * > GraphQLTypeAsync for $name where (
261
+ Self : $crate:: GraphQLType <$crate:: __juniper_insert_generic!( $( $scalar) +) > + Send + Sync ,
262
+ Self :: Context : Send + Sync ,
263
+ Self :: TypeInfo : Send + Sync ,
264
+ )
265
+ {
266
+ #[ allow( unused_variables) ]
267
+ fn resolve_field_async<' __b>(
268
+ & ' __b $main_self,
269
+ info: & ' __b Self :: TypeInfo ,
270
+ field: & ' __b str ,
271
+ args: & ' __b $crate:: Arguments <$crate:: __juniper_insert_generic!( $( $scalar) +) >,
272
+ executor: & ' __b $crate:: Executor <Self :: Context , $crate:: __juniper_insert_generic!( $( $scalar) +) >
273
+ ) -> $crate:: BoxFuture <' __b, $crate:: ExecutionResult <$crate:: __juniper_insert_generic!( $( $scalar) +) >>
274
+ where
275
+ $crate:: __juniper_insert_generic!( $( $scalar) +) : Send + Sync ,
276
+ {
277
+ use $crate:: GraphQLType ;
278
+ let v = $main_self. resolve_field( info, field, args, executor) ;
279
+ Box :: pin( futures:: future:: ready( v) )
280
+ }
281
+ }
282
+ ) ;
283
+ /*$crate::__juniper_impl_trait!(
284
+ impl<$($scalar)* $(, $lifetimes)* > GraphQLTypeAsync for $name
285
+ {
286
+ /*fn resolve_into_type_async<$($lifetimes)? >(
287
+ &$($lifetimes)? $main_self,
288
+ info: &$($lifetimes)? Self::TypeInfo,
289
+ type_name: &str,
290
+ _: Option<$($lifetimes)? [$crate::Selection<$($lifetimes,)? $crate::__juniper_insert_generic!($($scalar)*)>]>,
291
+ executor: &$($lifetimes)? $crate::Executor<$($lifetimes,)? $($lifetimes,)? Self::Context, $crate::__juniper_insert_generic!($($scalar)*)>,
292
+ ) -> $crate::BoxFuture<$($lifetimes,)? $crate::ExecutionResult<$crate::__juniper_insert_generic!($($scalar)*)>> {
293
+ $(let $resolver_ctx = &executor.context();)*
294
+
295
+ $(
296
+ if type_name == (<$resolver_src as $crate::GraphQLType<_>>::name(&())).unwrap() {
297
+ return executor.resolve_async(&(), &$resolver_expr);
298
+ }
299
+ )*
300
+
301
+ panic!("Concrete type not handled by instance resolvers on {}", $($outname)*);
302
+ }*/
303
+ }
304
+ );*/
305
+ /*$crate::__juniper_impl_trait!(
306
+ impl<$($scalar)* $(, $lifetimes)* > GraphQLTypeAsync for $name {
307
+ fn resolve_into_type_async<$($lifetimes)* >(
308
+ &$($lifetimes)* $main_self,
309
+ info: &$($lifetimes)* Self::TypeInfo,
310
+ type_name: &str,
311
+ _: Option<'___a, [$crate::Selection<'___a, $crate::__juniper_insert_generic!($($scalar)*)>]>,
312
+ executor: &'___a $crate::Executor<'___a, '___a, Self::Context, $crate::__juniper_insert_generic!($($scalar)*)>,
313
+ ) -> $crate::BoxFuture<'___a, $crate::ExecutionResult<$crate::__juniper_insert_generic!($($scalar)*)>> {
314
+ $(let $resolver_ctx = &executor.context();)*
315
+
316
+ $(
317
+ if type_name == (<$resolver_src as $crate::GraphQLType<_>>::name(&())).unwrap() {
318
+ return executor.resolve_async(&(), &$resolver_expr);
319
+ }
320
+ )*
321
+
322
+ panic!("Concrete type not handled by instance resolvers on {}", $($outname)*);
323
+ }
324
+
325
+ #[allow(unused_variables)]
326
+ fn resolve_field_async<'___a>(
327
+ &'___a $main_self,
328
+ _info: &'___a Self::TypeInfo,
329
+ _field_name: &'___a str,
330
+ _arguments: &'___a $crate::Arguments<$crate::__juniper_insert_generic!($($scalar)+)>,
331
+ _executor: &'___a $crate::Executor<Self::Context, $crate::__juniper_insert_generic!($($scalar)+)>,
332
+ ) -> $crate::BoxFuture<'___a, $crate::ExecutionResult<$crate::__juniper_insert_generic!($($scalar)+)>> {
333
+ $(
334
+ if _field_name == &$crate::to_camel_case(stringify!($fn_name)) {
335
+ return Box::pin(async move {
336
+ let f = (|| {
337
+ $(
338
+ let $arg_name: $arg_ty = args.get(&$crate::to_camel_case(stringify!($arg_name)))
339
+ .expect(concat!(
340
+ "Argument ",
341
+ stringify!($arg_name),
342
+ " missing - validation must have failed"
343
+ ));
344
+ )*
345
+ $(
346
+ let $executor = &_executor;
347
+ )*
348
+ $body
349
+ });
350
+
351
+ let result: $return_ty = f();
352
+ let resolve = $crate::IntoResolvable::into(result, _executor.context());
353
+ match resolve {
354
+ Ok(Some((ctx, r))) => {
355
+ _executor.replaced_context(ctx)
356
+ .resolve_with_ctx_async(&(), &r)
357
+ .await
358
+ },
359
+ Ok(None) => Ok($crate::Value::null()),
360
+ Err(e) => Err(e)
361
+ }
362
+ });
363
+ }
364
+ )*
365
+
366
+ panic!("Field {} not found on type {}", _field_name, $($outname)*)
367
+ }
368
+ }
369
+ );*/
258
370
} ;
259
371
260
372
(
0 commit comments