diff --git a/src/Service.GraphQLBuilder/GraphQLUtils.cs b/src/Service.GraphQLBuilder/GraphQLUtils.cs index f1c6e0a872..a5d321e4fb 100644 --- a/src/Service.GraphQLBuilder/GraphQLUtils.cs +++ b/src/Service.GraphQLBuilder/GraphQLUtils.cs @@ -186,10 +186,14 @@ public static bool TryExtractGraphQLFieldModelName(IDirectiveCollection fieldDir { if (dir.Name.Value == ModelDirectiveType.DirectiveName) { - dir.ToObject(); - modelName = dir.GetArgument(ModelDirectiveType.ModelNameArgument).ToString(); + ModelDirectiveType modelDirectiveType = dir.ToObject(); + + if (modelDirectiveType.Name.HasValue) + { + modelName = dir.GetArgument(ModelDirectiveType.ModelNameArgument).ToString(); + return modelName is not null; + } - return modelName is not null; } } diff --git a/src/Service.Tests/CosmosTests/TestBase.cs b/src/Service.Tests/CosmosTests/TestBase.cs index a71977c3b3..e2ad31aafb 100644 --- a/src/Service.Tests/CosmosTests/TestBase.cs +++ b/src/Service.Tests/CosmosTests/TestBase.cs @@ -29,6 +29,8 @@ namespace Azure.DataApiBuilder.Service.Tests.CosmosTests; public class TestBase { internal const string DATABASE_NAME = "graphqldb"; + // Intentionally removed name attibute from Planet model to test scenario where the 'name' attribute + // is not explicitly added in the schema internal const string GRAPHQL_SCHEMA = @" type Character @model(name:""Character"") { id : ID, @@ -39,7 +41,7 @@ type Character @model(name:""Character"") { star: Star } -type Planet @model(name:""Planet"") { +type Planet @model { id : ID!, name : String, character: Character,