diff --git a/generator/graphql-kotlin-federation/src/main/kotlin/com/expediagroup/graphql/generator/federation/directives/KeyDirective.kt b/generator/graphql-kotlin-federation/src/main/kotlin/com/expediagroup/graphql/generator/federation/directives/KeyDirective.kt index 0d28c29b5a..df8264f7a2 100644 --- a/generator/graphql-kotlin-federation/src/main/kotlin/com/expediagroup/graphql/generator/federation/directives/KeyDirective.kt +++ b/generator/graphql-kotlin-federation/src/main/kotlin/com/expediagroup/graphql/generator/federation/directives/KeyDirective.kt @@ -28,7 +28,7 @@ import graphql.schema.GraphQLArgument * directive @key(fields: _FieldSet!) repeatable on OBJECT | INTERFACE * * # federation v2 definition - * directive @key(fields: _FieldSet!, resolvable: Boolean) repeatable on OBJECT | INTERFACE + * directive @key(fields: _FieldSet!, resolvable: Boolean = true) repeatable on OBJECT | INTERFACE * ``` * * The @key directive is used to indicate a combination of fields that can be used to uniquely identify and fetch an object or interface. Key directive should be specified on the root entity type as @@ -116,6 +116,7 @@ internal val KEY_DIRECTIVE_TYPE_V2: graphql.schema.GraphQLDirective = graphql.sc GraphQLArgument.newArgument() .name("resolvable") .type(Scalars.GraphQLBoolean) + .defaultValueProgrammatic(true) ) .repeatable(true) .build() diff --git a/generator/graphql-kotlin-federation/src/test/kotlin/com/expediagroup/graphql/generator/federation/FederatedSchemaV2GeneratorTest.kt b/generator/graphql-kotlin-federation/src/test/kotlin/com/expediagroup/graphql/generator/federation/FederatedSchemaV2GeneratorTest.kt index c0deaabb92..82c0d67350 100644 --- a/generator/graphql-kotlin-federation/src/test/kotlin/com/expediagroup/graphql/generator/federation/FederatedSchemaV2GeneratorTest.kt +++ b/generator/graphql-kotlin-federation/src/test/kotlin/com/expediagroup/graphql/generator/federation/FederatedSchemaV2GeneratorTest.kt @@ -55,7 +55,7 @@ private val FEDERATED_SDL_V2 = ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT "Space separated list of primary keys needed to access federated object" - directive @key(fields: _FieldSet!, resolvable: Boolean) repeatable on OBJECT | INTERFACE + directive @key(fields: _FieldSet!, resolvable: Boolean = true) repeatable on OBJECT | INTERFACE "Links definitions within the document to external schemas." directive @link(import: [String], url: String) repeatable on SCHEMA diff --git a/website/docs/schema-generator/federation/federated-directives.md b/website/docs/schema-generator/federation/federated-directives.md index d6cc5e9f59..442d03312c 100644 --- a/website/docs/schema-generator/federation/federated-directives.md +++ b/website/docs/schema-generator/federation/federated-directives.md @@ -168,7 +168,7 @@ type Product { directive @key(fields: _FieldSet!) repeatable on OBJECT | INTERFACE # federation v2 definition -directive @key(fields: _FieldSet!, resolvable: Boolean) repeatable on OBJECT | INTERFACE +directive @key(fields: _FieldSet!, resolvable: Boolean = true) repeatable on OBJECT | INTERFACE ``` The `@key` directive is used to indicate a combination of fields that can be used to uniquely identify and fetch an