@@ -240,7 +240,8 @@ private static string ToFullyQualifiedString(
240
240
IMethodSymbol resolverMethod ,
241
241
ILocalTypeLookup typeLookup )
242
242
{
243
- if ( type . TypeKind is TypeKind . Error && typeLookup . TryGetTypeName ( type , resolverMethod , out var typeDisplayName ) )
243
+ if ( type . TypeKind is TypeKind . Error
244
+ && typeLookup . TryGetTypeName ( type , resolverMethod , out var typeDisplayName ) )
244
245
{
245
246
return typeDisplayName ;
246
247
}
@@ -528,84 +529,92 @@ private void AddResolverArguments(Resolver resolver, IMethodSymbol resolverMetho
528
529
case ResolverParameterKind . CancellationToken :
529
530
_writer . WriteIndentedLine ( "var args{0} = context.RequestAborted;" , i ) ;
530
531
break ;
532
+
531
533
case ResolverParameterKind . ClaimsPrincipal :
532
534
_writer . WriteIndentedLine (
533
535
"var args{0} = context.GetGlobalState<{1}>(\" ClaimsPrincipal\" );" ,
534
536
i ,
535
537
WellKnownTypes . ClaimsPrincipal ) ;
536
538
break ;
539
+
537
540
case ResolverParameterKind . DocumentNode :
538
541
_writer . WriteIndentedLine ( "var args{0} = context.Operation.Document;" , i ) ;
539
542
break ;
543
+
540
544
case ResolverParameterKind . EventMessage :
541
545
_writer . WriteIndentedLine (
542
546
"var args{0} = context.GetScopedState<{1}>("
543
547
+ "global::HotChocolate.WellKnownContextData.EventMessage);" ,
544
548
i ,
545
549
parameter . Type . ToFullyQualified ( ) ) ;
546
550
break ;
551
+
547
552
case ResolverParameterKind . FieldNode :
548
553
_writer . WriteIndentedLine (
549
554
"var args{0} = context.Selection.SyntaxNode" ,
550
555
i ,
551
556
parameter . Type . ToFullyQualified ( ) ) ;
552
557
break ;
558
+
553
559
case ResolverParameterKind . OutputField :
554
560
_writer . WriteIndentedLine (
555
561
"var args{0} = context.Selection.Field" ,
556
562
i ,
557
563
parameter . Type . ToFullyQualified ( ) ) ;
558
564
break ;
565
+
559
566
case ResolverParameterKind . HttpContext :
560
567
_writer . WriteIndentedLine (
561
568
"var args{0} = context.GetGlobalState<global::{1}>(nameof(global::{1}))!;" ,
562
569
i ,
563
570
WellKnownTypes . HttpContext ) ;
564
571
break ;
572
+
565
573
case ResolverParameterKind . HttpRequest :
566
574
_writer . WriteIndentedLine (
567
575
"var args{0} = context.GetGlobalState<global::{1}>(nameof(global::{1}))?.Request!;" ,
568
576
i ,
569
577
WellKnownTypes . HttpContext ) ;
570
578
break ;
579
+
571
580
case ResolverParameterKind . HttpResponse :
572
581
_writer . WriteIndentedLine (
573
582
"var args{0} = context.GetGlobalState<global::{1}>(nameof(global::{1}))?.Response!;" ,
574
583
i ,
575
584
WellKnownTypes . HttpContext ) ;
576
585
break ;
586
+
577
587
case ResolverParameterKind . GetGlobalState when parameter . Parameter . HasExplicitDefaultValue :
578
- {
579
- var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
580
- var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
588
+ {
589
+ var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
590
+ var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
591
+
592
+ _writer . WriteIndentedLine (
593
+ "var args{0} = context.GetGlobalStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
594
+ i ,
595
+ parameter . Type . ToFullyQualified ( ) ,
596
+ parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
597
+ parameter . Key ,
598
+ defaultValueString ) ;
599
+ break ;
600
+ }
581
601
582
- _writer . WriteIndentedLine (
583
- "var args{0} = context.GetGlobalStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
584
- i ,
585
- parameter . Type . ToFullyQualified ( ) ,
586
- parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
587
- parameter . Key ,
588
- defaultValueString ) ;
589
- break ;
590
- }
591
602
case ResolverParameterKind . GetGlobalState when ! parameter . IsNullable :
592
- {
593
603
_writer . WriteIndentedLine (
594
- "var args{0} = context.GetGlobalState<{1}>(\" {2}\" );" ,
595
- i ,
596
- parameter . Type . ToFullyQualified ( ) ,
597
- parameter . Key ) ;
604
+ "var args{0} = context.GetGlobalState<{1}>(\" {2}\" );" ,
605
+ i ,
606
+ parameter . Type . ToFullyQualified ( ) ,
607
+ parameter . Key ) ;
598
608
break ;
599
- }
609
+
600
610
case ResolverParameterKind . GetGlobalState :
601
- {
602
611
_writer . WriteIndentedLine (
603
612
"var args{0} = context.GetGlobalStateOrDefault<{1}>(\" {2}\" );" ,
604
613
i ,
605
614
parameter . Type . ToFullyQualified ( ) ,
606
615
parameter . Key ) ;
607
616
break ;
608
- }
617
+
609
618
case ResolverParameterKind . SetGlobalState :
610
619
_writer . WriteIndentedLine (
611
620
"var args{0} = new HotChocolate.SetState<{1}>("
@@ -614,38 +623,38 @@ private void AddResolverArguments(Resolver resolver, IMethodSymbol resolverMetho
614
623
( ( INamedTypeSymbol ) parameter . Type ) . TypeArguments [ 0 ] . ToFullyQualified ( ) ,
615
624
parameter . Key ) ;
616
625
break ;
626
+
617
627
case ResolverParameterKind . GetScopedState when parameter . Parameter . HasExplicitDefaultValue :
618
- {
619
- var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
620
- var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
628
+ {
629
+ var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
630
+ var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
631
+
632
+ _writer . WriteIndentedLine (
633
+ "var args{0} = context.GetScopedStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
634
+ i ,
635
+ parameter . Type . ToFullyQualified ( ) ,
636
+ parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
637
+ parameter . Key ,
638
+ defaultValueString ) ;
639
+ break ;
640
+ }
621
641
622
- _writer . WriteIndentedLine (
623
- "var args{0} = context.GetScopedStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
624
- i ,
625
- parameter . Type . ToFullyQualified ( ) ,
626
- parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
627
- parameter . Key ,
628
- defaultValueString ) ;
629
- break ;
630
- }
631
642
case ResolverParameterKind . GetScopedState when ! parameter . IsNullable :
632
- {
633
643
_writer . WriteIndentedLine (
634
- "var args{0} = context.GetScopedState<{1}>(\" {2}\" );" ,
635
- i ,
636
- parameter . Type . ToFullyQualified ( ) ,
637
- parameter . Key ) ;
644
+ "var args{0} = context.GetScopedState<{1}>(\" {2}\" );" ,
645
+ i ,
646
+ parameter . Type . ToFullyQualified ( ) ,
647
+ parameter . Key ) ;
638
648
break ;
639
- }
649
+
640
650
case ResolverParameterKind . GetScopedState :
641
- {
642
651
_writer . WriteIndentedLine (
643
- "var args{0} = context.GetScopedStateOrDefault<{1}>(\" {2}\" );" ,
644
- i ,
645
- parameter . Type . ToFullyQualified ( ) ,
646
- parameter . Key ) ;
652
+ "var args{0} = context.GetScopedStateOrDefault<{1}>(\" {2}\" );" ,
653
+ i ,
654
+ parameter . Type . ToFullyQualified ( ) ,
655
+ parameter . Key ) ;
647
656
break ;
648
- }
657
+
649
658
case ResolverParameterKind . SetScopedState :
650
659
_writer . WriteIndentedLine (
651
660
"var args{0} = new HotChocolate.SetState<{1}>("
@@ -654,38 +663,38 @@ private void AddResolverArguments(Resolver resolver, IMethodSymbol resolverMetho
654
663
( ( INamedTypeSymbol ) parameter . Type ) . TypeArguments [ 0 ] . ToFullyQualified ( ) ,
655
664
parameter . Key ) ;
656
665
break ;
666
+
657
667
case ResolverParameterKind . GetLocalState when parameter . Parameter . HasExplicitDefaultValue :
658
- {
659
- var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
660
- var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
668
+ {
669
+ var defaultValue = parameter . Parameter . ExplicitDefaultValue ;
670
+ var defaultValueString = GeneratorUtils . ConvertDefaultValueToString ( defaultValue , parameter . Type ) ;
671
+
672
+ _writer . WriteIndentedLine (
673
+ "var args{0} = context.GetLocalStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
674
+ i ,
675
+ parameter . Type . ToFullyQualified ( ) ,
676
+ parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
677
+ parameter . Key ,
678
+ defaultValueString ) ;
679
+ break ;
680
+ }
661
681
662
- _writer . WriteIndentedLine (
663
- "var args{0} = context.GetLocalStateOrDefault<{1}{2}>(\" {3}\" , {4});" ,
664
- i ,
665
- parameter . Type . ToFullyQualified ( ) ,
666
- parameter . Type . IsNullableRefType ( ) ? "?" : string . Empty ,
667
- parameter . Key ,
668
- defaultValueString ) ;
669
- break ;
670
- }
671
682
case ResolverParameterKind . GetLocalState when ! parameter . IsNullable :
672
- {
673
683
_writer . WriteIndentedLine (
674
- "var args{0} = context.GetLocalState<{1}>(\" {2}\" );" ,
675
- i ,
676
- parameter . Type . ToFullyQualified ( ) ,
677
- parameter . Key ) ;
684
+ "var args{0} = context.GetLocalState<{1}>(\" {2}\" );" ,
685
+ i ,
686
+ parameter . Type . ToFullyQualified ( ) ,
687
+ parameter . Key ) ;
678
688
break ;
679
- }
689
+
680
690
case ResolverParameterKind . GetLocalState :
681
- {
682
691
_writer . WriteIndentedLine (
683
- "var args{0} = context.GetLocalStateOrDefault<{1}>(\" {2}\" );" ,
684
- i ,
685
- parameter . Type . ToFullyQualified ( ) ,
686
- parameter . Key ) ;
692
+ "var args{0} = context.GetLocalStateOrDefault<{1}>(\" {2}\" );" ,
693
+ i ,
694
+ parameter . Type . ToFullyQualified ( ) ,
695
+ parameter . Key ) ;
687
696
break ;
688
- }
697
+
689
698
case ResolverParameterKind . SetLocalState :
690
699
_writer . WriteIndentedLine (
691
700
"var args{0} = new HotChocolate.SetState<{1}>("
@@ -705,6 +714,26 @@ private void AddResolverArguments(Resolver resolver, IMethodSymbol resolverMetho
705
714
resolver . Member . Name ,
706
715
ToFullyQualifiedString ( parameter . Type , resolverMethod , typeLookup ) ) ;
707
716
break ;
717
+
718
+ case ResolverParameterKind . DataContext :
719
+ var entityType = parameter . TypeParameters [ 0 ] . ToFullyQualified ( ) ;
720
+ _writer . WriteIndentedLine ( "var args{0}_selection = context.Selection;" , i ) ;
721
+ _writer . WriteIndentedLine ( "var args{0}_filter = context.GetFilterContext();" , i ) ;
722
+ _writer . WriteIndentedLine ( "var args{0}_sorting = context.GetSortingContext();" , i ) ;
723
+ _writer . WriteIndentedLine (
724
+ "var args{0} = new global::{1}<{2}>(" ,
725
+ i ,
726
+ WellKnownTypes . DataContext ,
727
+ entityType ) ;
728
+ using ( _writer . IncreaseIndent ( ) )
729
+ {
730
+ _writer . WriteIndentedLine ( "args{0}_selection.AsSelector<{1}>()," , i , entityType ) ;
731
+ _writer . WriteIndentedLine ( "args{0}_filter?.AsPredicate<{1}>()," , i , entityType ) ;
732
+ _writer . WriteIndentedLine ( "args{0}_sorting?.AsSortDefinition<{1}>());" , i , entityType ) ;
733
+ }
734
+
735
+ break ;
736
+
708
737
default :
709
738
throw new ArgumentOutOfRangeException ( ) ;
710
739
}
0 commit comments