Skip to content

Support schema directives #717

Closed

Description

@dariuszkuc

I want to suggest an idea and checked that ...

  • ... to my best knowledge, my idea wouldn't break something for other users
  • ... the documentation does not mention anything about my idea
  • ... there are no open or closed issues that are related to my idea

Description

SchemaParser currently does not process schema definitions which can include directive information.

Use Cases

Apollo Federation v2 relies on a schema @link directive to link definitions from external specification to the local schema. Gateway requires this link information to determine whether Federation v2 features can be used or it has to fallback to the v1 logic.

extend schema @link(url: "https://specs.apollo.dev/federation/v2.0", import: ["@key", "@shareable"])

See https://github.com/apollographql/apollo-federation-subgraph-compatibility/ for example federation integration.

Activity

  1. oryan-block commented on Sep 18, 2023

    @oryan-block
    Collaborator

    @dariuszkuc can you check if #763 resolved this?

  2. sanvikalx commented on Jul 30, 2024

    @sanvikalx

    @oryan-block
    The issue is still reproducing in latest 14.0.0 version
    E.g.
    https://github.com/sanvikalx/schema-directives-support/blob/master/src/test/java/org/example/SchemaDirectivesSupportTest.java

        @Test
        void testIt() {
            GraphQLSchema graphQLSchema = SchemaParser.newParser().schemaString("""
                            extend schema @link(url: "https://specs.apollo.dev/federation/v2.3",
                                import: ["@key", "@shareable", "@inaccessible"])
                                                    
                            type Query {
                                fdrDiscovery: FdrDiscoveryResponse @shareable
                                                    
                            }
                                                    
                            type FdrDiscoveryResponse @key(fields: "dummyId") {
                                                    
                                dummyId: String @inaccessible
                                hello: String
                            }
                            """)
                    .resolvers(new QueryResolverImpl())
                    .build()
                    .makeExecutableSchema();
    
            Assertions.assertNotNull(graphQLSchema);
        }
    

    It was working in 13.0.1 but now it's broken.
    So test will run success if switch to 13.0.1
    https://github.com/sanvikalx/schema-directives-support/blob/master/pom.xml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions