Skip to content

Commit 7c951da

Browse files
authored
Added ISyntaxNodeProvider to Skimmed type system member definitions (#7938)
1 parent f71192f commit 7c951da

16 files changed

+369
-3
lines changed

src/HotChocolate/Skimmed/src/Skimmed/ArgumentAssignment.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace HotChocolate.Skimmed;
77
/// <summary>
88
/// Represents an argument value assignment.
99
/// </summary>
10-
public sealed class ArgumentAssignment
10+
public sealed class ArgumentAssignment : ISyntaxNodeProvider
1111
{
1212
/// <summary>
1313
/// Initializes a new instance of the <see cref="ArgumentAssignment"/> class.
@@ -102,4 +102,11 @@ public ArgumentAssignment(string name, IValueNode value)
102102
/// <returns></returns>
103103
public override string ToString()
104104
=> RewriteArgument(this).ToString(true);
105+
106+
/// <summary>
107+
/// Creates an <see cref="ArgumentNode"/> from an <see cref="ArgumentAssignment"/>.
108+
/// </summary>
109+
public ArgumentNode ToSyntaxNode() => RewriteArgument(this);
110+
111+
ISyntaxNode ISyntaxNodeProvider.ToSyntaxNode() => RewriteArgument(this);
105112
}

src/HotChocolate/Skimmed/src/Skimmed/ComplexTypeDefinition.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using HotChocolate.Features;
2+
using HotChocolate.Language;
23
using HotChocolate.Utilities;
34
using HotChocolate.Types;
5+
using static HotChocolate.Skimmed.Serialization.SchemaDebugFormatter;
46

57
namespace HotChocolate.Skimmed;
68

@@ -125,4 +127,22 @@ protected internal void Seal()
125127

126128
/// <inheritdoc />
127129
public abstract bool Equals(ITypeDefinition? other, TypeComparison comparison);
130+
131+
/// <summary>
132+
/// Creates a <see cref="ComplexTypeDefinitionNodeBase"/> from a
133+
/// <see cref="ComplexTypeDefinition"/>.
134+
/// </summary>
135+
public ComplexTypeDefinitionNodeBase ToSyntaxNode() => this switch
136+
{
137+
InterfaceTypeDefinition i => RewriteInterfaceType(i),
138+
ObjectTypeDefinition o => RewriteObjectType(o),
139+
_ => throw new ArgumentOutOfRangeException()
140+
};
141+
142+
ISyntaxNode ISyntaxNodeProvider.ToSyntaxNode() => this switch
143+
{
144+
InterfaceTypeDefinition i => RewriteInterfaceType(i),
145+
ObjectTypeDefinition o => RewriteObjectType(o),
146+
_ => throw new ArgumentOutOfRangeException()
147+
};
128148
}

src/HotChocolate/Skimmed/src/Skimmed/Contracts/IFieldDefinition.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public interface IFieldDefinition
1111
, IDeprecationProvider
1212
, IDirectivesProvider
1313
, IFeatureProvider
14+
, ISyntaxNodeProvider
1415
{
1516
/// <summary>
1617
/// Gets or sets the name of the field.

src/HotChocolate/Skimmed/src/Skimmed/Contracts/INamedTypeDefinition.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public interface INamedTypeDefinition
1111
, IDescriptionProvider
1212
, IDirectivesProvider
1313
, IFeatureProvider
14+
, ISyntaxNodeProvider
1415
{
1516
/// <summary>
1617
/// Gets or sets the name of the type.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using HotChocolate.Language;
2+
3+
namespace HotChocolate.Skimmed;
4+
5+
/// <summary>
6+
/// A type system member that can be converted to an <see cref="ISyntaxNode"/>.
7+
/// </summary>
8+
public interface ISyntaxNodeProvider : ITypeSystemMemberDefinition
9+
{
10+
/// <summary>
11+
/// Creates an <see cref="ISyntaxNode"/> from an <see cref="ITypeSystemMemberDefinition"/>.
12+
/// </summary>
13+
ISyntaxNode ToSyntaxNode();
14+
}

src/HotChocolate/Skimmed/src/Skimmed/DirectiveDefinition.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
using HotChocolate.Features;
2-
using HotChocolate.Types;
2+
using HotChocolate.Language;
33
using HotChocolate.Utilities;
44
using static HotChocolate.Skimmed.Serialization.SchemaDebugFormatter;
5+
using DirectiveLocation = HotChocolate.Types.DirectiveLocation;
56

67
namespace HotChocolate.Skimmed;
78

@@ -13,6 +14,7 @@ public class DirectiveDefinition
1314
, IDescriptionProvider
1415
, IFeatureProvider
1516
, ISealable
17+
, ISyntaxNodeProvider
1618
{
1719
private string _name;
1820
private IInputFieldDefinitionCollection? _arguments;
@@ -181,6 +183,13 @@ internal void Seal()
181183
public override string ToString()
182184
=> RewriteDirectiveType(this).ToString(true);
183185

186+
/// <summary>
187+
/// Creates a <see cref="DirectiveDefinitionNode"/> from a <see cref="DirectiveDefinition"/>.
188+
/// </summary>
189+
public DirectiveDefinitionNode ToSyntaxNode() => RewriteDirectiveType(this);
190+
191+
ISyntaxNode ISyntaxNodeProvider.ToSyntaxNode() => RewriteDirectiveType(this);
192+
184193
/// <summary>
185194
/// Creates a new directive definition.
186195
/// </summary>

src/HotChocolate/Skimmed/src/Skimmed/EnumTypeDefinition.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using HotChocolate.Features;
2+
using HotChocolate.Language;
23
using HotChocolate.Types;
34
using HotChocolate.Utilities;
45
using static HotChocolate.Skimmed.Serialization.SchemaDebugFormatter;
@@ -121,6 +122,13 @@ protected internal void Seal()
121122
public override string ToString()
122123
=> RewriteEnumType(this).ToString(true);
123124

125+
/// <summary>
126+
/// Creates an <see cref="EnumTypeDefinitionNode"/> from an <see cref="EnumTypeDefinition"/>.
127+
/// </summary>
128+
public EnumTypeDefinitionNode ToSyntaxNode() => RewriteEnumType(this);
129+
130+
ISyntaxNode ISyntaxNodeProvider.ToSyntaxNode() => RewriteEnumType(this);
131+
124132
/// <inheritdoc />
125133
public bool Equals(ITypeDefinition? other) => Equals(other, TypeComparison.Reference);
126134

src/HotChocolate/Skimmed/src/Skimmed/EnumValue.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using HotChocolate.Features;
2+
using HotChocolate.Language;
23
using HotChocolate.Utilities;
34
using static HotChocolate.Skimmed.Serialization.SchemaDebugFormatter;
45

@@ -14,6 +15,7 @@ public sealed class EnumValue(string name)
1415
, IDescriptionProvider
1516
, IDeprecationProvider
1617
, ISealable
18+
, ISyntaxNodeProvider
1719
{
1820
private string _name = name.EnsureGraphQLName();
1921
private string? _description;
@@ -141,6 +143,13 @@ internal void Seal()
141143
public override string ToString()
142144
=> RewriteEnumValue(this).ToString(true);
143145

146+
/// <summary>
147+
/// Creates an <see cref="EnumValueDefinitionNode"/> from an <see cref="EnumValue"/>.
148+
/// </summary>
149+
public EnumValueDefinitionNode ToSyntaxNode() => RewriteEnumValue(this);
150+
151+
ISyntaxNode ISyntaxNodeProvider.ToSyntaxNode() => RewriteEnumValue(this);
152+
144153
/// <summary>
145154
/// Creates a new enum value.
146155
/// </summary>

src/HotChocolate/Skimmed/src/Skimmed/InputFieldDefinition.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,14 @@ internal void Seal()
181181
public override string ToString()
182182
=> RewriteInputField(this).ToString(true);
183183

184+
/// <summary>
185+
/// Creates an <see cref="InputValueDefinitionNode"/> from an
186+
/// <see cref="InputFieldDefinition"/>.
187+
/// </summary>
188+
public InputValueDefinitionNode ToSyntaxNode() => RewriteInputField(this);
189+
190+
ISyntaxNode ISyntaxNodeProvider.ToSyntaxNode() => RewriteInputField(this);
191+
184192
/// <summary>
185193
/// Creates a new instance of <see cref="InputFieldDefinition"/>.
186194
/// </summary>

src/HotChocolate/Skimmed/src/Skimmed/InputObjectTypeDefinition.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using HotChocolate.Features;
2+
using HotChocolate.Language;
23
using HotChocolate.Types;
34
using HotChocolate.Utilities;
45
using static HotChocolate.Skimmed.Serialization.SchemaDebugFormatter;
@@ -137,6 +138,14 @@ public bool Equals(ITypeDefinition? other, TypeComparison comparison)
137138
public override string ToString()
138139
=> RewriteInputObjectType(this).ToString(true);
139140

141+
/// <summary>
142+
/// Creates an <see cref="InputObjectTypeDefinitionNode"/> from an
143+
/// <see cref="InputObjectTypeDefinition"/>.
144+
/// </summary>
145+
public InputObjectTypeDefinitionNode ToSyntaxNode() => RewriteInputObjectType(this);
146+
147+
ISyntaxNode ISyntaxNodeProvider.ToSyntaxNode() => RewriteInputObjectType(this);
148+
140149
/// <summary>
141150
/// Creates a new input object type definition.
142151
/// </summary>

0 commit comments

Comments
 (0)