NestJS GraphQL Apollo Federation extension. You keep using @nestjs/graphql for all other steps
$ yarn install nestjs-graphql-gateway
import { Module } from '@nestjs/common';
import { GraphqlDistributedModule } from 'nestjs-graphql-gateway';
@Module({
imports: [
GraphqlDistributedModule.forRoot({
typePaths: [path.join(process.cwd() + '/apps/service-auth/src', '/**/*.graphql')],
introspection: true,
playground: {
workspaceName: 'GRAPHQL CQRS',
settings: {
'editor.theme': 'light',
},
},
context: (ctx) => ctx,
})
]
})
export class AppModule {}
// Code first TypegraphQl
@Module({
imports: [
GraphqlDistributedModule.forRoot({
autoSchemaFile: 'graphs/demo.gql',
// optional orphaned types
buildSchemaOptions: {
orphanedTypes: [Tenant, TenantMember, User],
},
context: (ctx) => ctx,
})
]
})
export class AppModule {}
import { Module } from '@nestjs/common';
import { GraphqlDistributedGatewayModule } from 'nestjs-graphql-gateway';
@Module({
imports: [
GraphqlDistributedGatewayModule.forRoot({
subscriptions: false,
path: '/graphql',
context: context => context,
serviceList: [
{ name: 'auth', url: 'http://localhost:1000/graphql' },
{ name: 'user', url: 'http://localhost:2000/graphql' },
// more services
],
buildService({ url }) {
return new HeadersDatasource({ url });
},
}),
]
})
export class AppModule {}
This project is MIT licensed.