0.0.1 • Published 2 years ago

fgasulay-apollo v0.0.1

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

Apollo Supergrpah Manager imeplementation

Usage

Subgraph

In your entry module:

import { Module } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { ApolloSubgraphModule } from 'fgasulay-apollo';
import { PostModule } from './modules/posts.module';

@Module({
  imports: [
    ApolloSubgraphModule.register({
      subgraphName: 'posts',
      subgraphUrl: 'http://localhost:4001/graphql',
      apolloServer: {
        autoSchemaFile: true,
        playground: true,
      },
      microservice: {
        transport: Transport.NATS,
        options: {
          servers: ['nats://localhost:4222'],
        },
      },
    }),
    PostModule,
  ],
  providers: [],
})
export class AppModule {}

in your main file:

/**
 * This is not a production server yet!
 * This is only a minimal backend to get started.
 */

import { Logger } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { MicroserviceOptions, Transport } from '@nestjs/microservices';

import { AppModule } from './app.module';
const port = process.env.PORT || 4001;

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app
    .connectMicroservice<MicroserviceOptions>({
      transport: Transport.NATS,
      options: {
        servers: ['nats://localhost:4222'],
      },
    })
    .enableShutdownHooks();
  await app.startAllMicroservices();
  await app.listen(port);
  Logger.log(`🚀 Application is running on: http://localhost:${port}`);
}

bootstrap();

Gateway

In your entry module:

import { Module } from '@nestjs/common';
import { Transport } from '@nestjs/microservices';
import { ApolloGatewayModule, InjectionTokens } from 'fgasulay-apollo';

@Module({
  imports: [
    ApolloGatewayModule.register({
      apolloServer: {
        playground: true,
      },
      microservice: {
        name: InjectionTokens.Broker,
        transport: Transport.NATS,
        options: {
          servers: ['nats://localhost:4222'],
        },
      },
    }),
  ],
})
export class AppModule {}

In your main file

import { Logger } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { MicroserviceOptions, Transport } from '@nestjs/microservices';
import { AppModule } from './app.module';
const port = process.env.PORT || 4000;

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.connectMicroservice<MicroserviceOptions>({
    transport: Transport.NATS,
    options: {
      servers: ['nats://localhost:4222'],
    },
  });
  await app.startAllMicroservices();
  await app.listen(port);
  Logger.log(`🚀 Application is running on: http://localhost:${port}`);
}

bootstrap();
0.0.1

2 years ago