Skip to content

Commit fbfa821

Browse files
authored
[Fusion] Used @fusion__inaccessible in the execution schema (#8005)
1 parent 6878fe9 commit fbfa821

20 files changed

+81
-72
lines changed

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/Definitions/InaccessibleDirectiveDefinition.cs renamed to src/HotChocolate/Fusion-vnext/src/Fusion.Composition/Definitions/FusionInaccessibleDirectiveDefinition.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace HotChocolate.Fusion.Definitions;
66

7-
internal sealed class InaccessibleDirectiveDefinition : DirectiveDefinition
7+
internal sealed class FusionInaccessibleDirectiveDefinition : DirectiveDefinition
88
{
9-
public InaccessibleDirectiveDefinition() : base(Inaccessible)
9+
public FusionInaccessibleDirectiveDefinition() : base(FusionInaccessible)
1010
{
1111
Locations =
1212
DirectiveLocation.ArgumentDefinition

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/Extensions/DirectivesProviderExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ public static bool HasExternalDirective(this IDirectivesProvider type)
3737
return type.Directives.ContainsName(DirectiveNames.External);
3838
}
3939

40+
public static bool HasFusionInaccessibleDirective(this IDirectivesProvider type)
41+
{
42+
return type.Directives.ContainsName(DirectiveNames.FusionInaccessible);
43+
}
44+
4045
public static bool HasInaccessibleDirective(this IDirectivesProvider type)
4146
{
4247
return type.Directives.ContainsName(DirectiveNames.Inaccessible);

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/PostMergeValidationRules/EmptyMergedEnumTypeRule.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ public void Handle(EnumTypeEvent @event, CompositionContext context)
1717
{
1818
var (enumType, schema) = @event;
1919

20-
if (enumType.HasInaccessibleDirective())
20+
if (enumType.HasFusionInaccessibleDirective())
2121
{
2222
return;
2323
}
2424

25-
var accessibleValues = enumType.Values.Where(v => !v.HasInaccessibleDirective());
25+
var accessibleValues = enumType.Values.Where(v => !v.HasFusionInaccessibleDirective());
2626

2727
if (!accessibleValues.Any())
2828
{

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/PostMergeValidationRules/EmptyMergedInputObjectTypeRule.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ public void Handle(InputTypeEvent @event, CompositionContext context)
2121
{
2222
var (inputType, schema) = @event;
2323

24-
if (inputType.HasInaccessibleDirective())
24+
if (inputType.HasFusionInaccessibleDirective())
2525
{
2626
return;
2727
}
2828

29-
var accessibleFields = inputType.Fields.Where(f => !f.HasInaccessibleDirective());
29+
var accessibleFields = inputType.Fields.Where(f => !f.HasFusionInaccessibleDirective());
3030

3131
if (!accessibleFields.Any())
3232
{

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/PostMergeValidationRules/EmptyMergedInterfaceTypeRule.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ public void Handle(InterfaceTypeEvent @event, CompositionContext context)
1717
{
1818
var (interfaceType, schema) = @event;
1919

20-
if (interfaceType.HasInaccessibleDirective())
20+
if (interfaceType.HasFusionInaccessibleDirective())
2121
{
2222
return;
2323
}
2424

25-
var accessibleFields = interfaceType.Fields.Where(f => !f.HasInaccessibleDirective());
25+
var accessibleFields = interfaceType.Fields.Where(f => !f.HasFusionInaccessibleDirective());
2626

2727
if (!accessibleFields.Any())
2828
{

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/PostMergeValidationRules/EmptyMergedObjectTypeRule.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ public void Handle(ObjectTypeEvent @event, CompositionContext context)
2121
{
2222
var (objectType, schema) = @event;
2323

24-
if (schema.IsRootOperationType(objectType) || objectType.HasInaccessibleDirective())
24+
if (schema.IsRootOperationType(objectType) || objectType.HasFusionInaccessibleDirective())
2525
{
2626
return;
2727
}
2828

29-
var accessibleFields = objectType.Fields.Where(f => !f.HasInaccessibleDirective());
29+
var accessibleFields = objectType.Fields.Where(f => !f.HasFusionInaccessibleDirective());
3030

3131
if (!accessibleFields.Any())
3232
{

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/PostMergeValidationRules/EmptyMergedUnionTypeRule.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ public void Handle(UnionTypeEvent @event, CompositionContext context)
1717
{
1818
var (unionType, schema) = @event;
1919

20-
if (unionType.HasInaccessibleDirective())
20+
if (unionType.HasFusionInaccessibleDirective())
2121
{
2222
return;
2323
}
2424

25-
var accessibleTypes = unionType.Types.Where(t => !t.HasInaccessibleDirective());
25+
var accessibleTypes = unionType.Types.Where(t => !t.HasFusionInaccessibleDirective());
2626

2727
if (!accessibleTypes.Any())
2828
{

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/PostMergeValidationRules/NoQueriesRule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public void Handle(ObjectTypeEvent @event, CompositionContext context)
3030
return;
3131
}
3232

33-
var accessibleFields = objectType.Fields.Where(f => !f.HasInaccessibleDirective());
33+
var accessibleFields = objectType.Fields.Where(f => !f.HasFusionInaccessibleDirective());
3434

3535
if (!accessibleFields.Any())
3636
{

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/SourceSchemaMerger.cs

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,14 @@ private static InputFieldDefinition MergeArguments(
162162
mergedArgument.Type = mergedArgument.Type.ReplaceNameType(
163163
_ => GetOrCreateType(mergedSchema, mergedArgument.Type));
164164

165+
AddFusionInputFieldDirectives(mergedArgument, argumentGroup);
166+
165167
if (argumentGroup.Any(i => i.Argument.HasInaccessibleDirective()))
166168
{
167-
mergedArgument.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
169+
mergedArgument.Directives.Add(
170+
new Directive(new FusionInaccessibleDirectiveDefinition()));
168171
}
169172

170-
AddFusionInputFieldDirectives(mergedArgument, argumentGroup);
171-
172173
return mergedArgument;
173174
}
174175

@@ -195,13 +196,13 @@ private EnumTypeDefinition MergeEnumTypes(
195196

196197
enumType.Description = description;
197198

199+
AddFusionTypeDirectives(enumType, typeGroup);
200+
198201
if (typeGroup.Any(i => i.Type.HasInaccessibleDirective()))
199202
{
200-
enumType.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
203+
enumType.Directives.Add(new Directive(new FusionInaccessibleDirectiveDefinition()));
201204
}
202205

203-
AddFusionTypeDirectives(enumType, typeGroup);
204-
205206
// [EnumValueName: [{EnumValue, EnumType, Schema}, ...], ...].
206207
var enumValueGroupByName = typeGroup
207208
.SelectMany(
@@ -235,13 +236,13 @@ private EnumValue MergeEnumValues(ImmutableArray<EnumValueInfo> enumValueGroup)
235236

236237
var enumValue = new EnumValue(valueName) { Description = description };
237238

239+
AddFusionEnumValueDirectives(enumValue, enumValueGroup);
240+
238241
if (enumValueGroup.Any(i => i.EnumValue.HasInaccessibleDirective()))
239242
{
240-
enumValue.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
243+
enumValue.Directives.Add(new Directive(new FusionInaccessibleDirectiveDefinition()));
241244
}
242245

243-
AddFusionEnumValueDirectives(enumValue, enumValueGroup);
244-
245246
return enumValue;
246247
}
247248

@@ -269,13 +270,14 @@ private InputObjectTypeDefinition MergeInputTypes(
269270

270271
inputObjectType.Description = description;
271272

273+
AddFusionTypeDirectives(inputObjectType, typeGroup);
274+
272275
if (typeGroup.Any(i => i.Type.HasInaccessibleDirective()))
273276
{
274-
inputObjectType.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
277+
inputObjectType.Directives.Add(
278+
new Directive(new FusionInaccessibleDirectiveDefinition()));
275279
}
276280

277-
AddFusionTypeDirectives(inputObjectType, typeGroup);
278-
279281
// [FieldName: [{Field, Type, Schema}, ...], ...].
280282
var fieldGroupByName = typeGroup
281283
.SelectMany(
@@ -326,13 +328,13 @@ private InputFieldDefinition MergeInputFields(
326328
Type = fieldType.ReplaceNameType(_ => GetOrCreateType(mergedSchema, fieldType))
327329
};
328330

331+
AddFusionInputFieldDirectives(inputField, inputFieldGroup);
332+
329333
if (inputFieldGroup.Any(i => i.Field.HasInaccessibleDirective()))
330334
{
331-
inputField.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
335+
inputField.Directives.Add(new Directive(new FusionInaccessibleDirectiveDefinition()));
332336
}
333337

334-
AddFusionInputFieldDirectives(inputField, inputFieldGroup);
335-
336338
return inputField;
337339
}
338340

@@ -374,14 +376,15 @@ private InterfaceTypeDefinition MergeInterfaceTypes(
374376
GetOrCreateType<InterfaceTypeDefinition>(mergedSchema, interfaceName));
375377
}
376378

379+
AddFusionTypeDirectives(interfaceType, typeGroup);
380+
AddFusionImplementsDirectives(interfaceType, [.. interfaceGroupByName.SelectMany(g => g)]);
381+
377382
if (typeGroup.Any(i => i.Type.HasInaccessibleDirective()))
378383
{
379-
interfaceType.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
384+
interfaceType.Directives.Add(
385+
new Directive(new FusionInaccessibleDirectiveDefinition()));
380386
}
381387

382-
AddFusionTypeDirectives(interfaceType, typeGroup);
383-
AddFusionImplementsDirectives(interfaceType, [.. interfaceGroupByName.SelectMany(g => g)]);
384-
385388
// [FieldName: [{Field, Type, Schema}, ...], ...].
386389
var fieldGroupByName = typeGroup
387390
.SelectMany(
@@ -449,14 +452,14 @@ private InterfaceTypeDefinition MergeInterfaceTypes(
449452
GetOrCreateType<InterfaceTypeDefinition>(mergedSchema, interfaceName));
450453
}
451454

455+
AddFusionTypeDirectives(objectType, typeGroup);
456+
AddFusionImplementsDirectives(objectType, [.. interfaceGroupByName.SelectMany(g => g)]);
457+
452458
if (typeGroup.Any(i => i.Type.HasInaccessibleDirective()))
453459
{
454-
objectType.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
460+
objectType.Directives.Add(new Directive(new FusionInaccessibleDirectiveDefinition()));
455461
}
456462

457-
AddFusionTypeDirectives(objectType, typeGroup);
458-
AddFusionImplementsDirectives(objectType, [.. interfaceGroupByName.SelectMany(g => g)]);
459-
460463
// [FieldName: [{Field, Type, Schema}, ...], ...].
461464
var fieldGroupByName = typeGroup
462465
.SelectMany(
@@ -536,14 +539,14 @@ private InterfaceTypeDefinition MergeInterfaceTypes(
536539
}
537540
}
538541

542+
AddFusionFieldDirectives(outputField, fieldGroup);
543+
AddFusionRequiresDirectives(outputField, fieldGroup);
544+
539545
if (fieldGroup.Any(i => i.Field.HasInaccessibleDirective()))
540546
{
541-
outputField.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
547+
outputField.Directives.Add(new Directive(new FusionInaccessibleDirectiveDefinition()));
542548
}
543549

544-
AddFusionFieldDirectives(outputField, fieldGroup);
545-
AddFusionRequiresDirectives(outputField, fieldGroup);
546-
547550
return outputField;
548551
}
549552

@@ -571,13 +574,13 @@ private ScalarTypeDefinition MergeScalarTypes(
571574

572575
scalarType.Description = description;
573576

577+
AddFusionTypeDirectives(scalarType, typeGroup);
578+
574579
if (typeGroup.Any(i => i.Type.HasInaccessibleDirective()))
575580
{
576-
scalarType.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
581+
scalarType.Directives.Add(new Directive(new FusionInaccessibleDirectiveDefinition()));
577582
}
578583

579-
AddFusionTypeDirectives(scalarType, typeGroup);
580-
581584
return scalarType;
582585
}
583586

@@ -604,11 +607,6 @@ private UnionTypeDefinition MergeUnionTypes(
604607

605608
unionType.Description = description;
606609

607-
if (typeGroup.Any(i => i.Type.HasInaccessibleDirective()))
608-
{
609-
unionType.Directives.Add(new Directive(new InaccessibleDirectiveDefinition()));
610-
}
611-
612610
AddFusionTypeDirectives(unionType, typeGroup);
613611

614612
// [UnionMemberName: [{MemberType, UnionType, Schema}, ...], ...].
@@ -628,6 +626,11 @@ private UnionTypeDefinition MergeUnionTypes(
628626
unionType.Types.Add(GetOrCreateType<ObjectTypeDefinition>(mergedSchema, memberName));
629627
}
630628

629+
if (typeGroup.Any(i => i.Type.HasInaccessibleDirective()))
630+
{
631+
unionType.Directives.Add(new Directive(new FusionInaccessibleDirectiveDefinition()));
632+
}
633+
631634
return unionType;
632635
}
633636

src/HotChocolate/Fusion-vnext/src/Fusion.Composition/WellKnownDirectiveNames.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ internal static class WellKnownDirectiveNames
66
public const string FusionEnumValue = "fusion__enumValue";
77
public const string FusionField = "fusion__field";
88
public const string FusionImplements = "fusion__implements";
9+
public const string FusionInaccessible = "fusion__inaccessible";
910
public const string FusionInputField = "fusion__inputField";
1011
public const string FusionLookup = "fusion__lookup";
1112
public const string FusionRequires = "fusion__requires";

0 commit comments

Comments
 (0)