All files / lib backend-gql.module.ts

0% Statements 0/6
0% Branches 0/12
0% Functions 0/1
0% Lines 0/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53                                                                                                         
import { AppApiEnvironment, AppDateScalar } from '@app/backend-interfaces';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
import { DynamicModule, Module, Provider } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { existsSync } from 'fs';
import { join } from 'path';
 
import { AppGqlMatcompModule } from './matcomp/matcomp.module';
 
export const backendGqlModuleProviders: Provider[] = [AppDateScalar];
 
@Module({
  imports: [AppGqlMatcompModule.forRoot()],
})
export class AppGqlModule {
  public static forRoot(environment: AppApiEnvironment): DynamicModule {
    const docker = existsSync('/.dockerenv');
 
    const gqlOptions: ApolloDriverConfig = {
      driver: ApolloDriver,
      useGlobalPrefix: true,
      path: '/graphql',
      include: [AppGqlMatcompModule],
      playground: environment.production ? false : true,
      installSubscriptionHandlers: true,
      autoSchemaFile:
        environment.firebase || docker
          ? false
          : environment.production
            ? join(process.cwd(), 'schema.gql')
            : join(process.cwd(), 'libs/backend-gql/schema.gql'),
      typePaths: environment.firebase || docker ? [join(process.cwd(), 'schema.gql')] : void 0,
      sortSchema: true,
      subscriptions: {
        'graphql-ws': {
          path: '/api/graphql',
        },
        'subscriptions-transport-ws': {
          path: '/api/graphql',
        },
      },
      buildSchemaOptions: {
        dateScalarMode: 'timestamp',
      },
    };
    return {
      module: AppGqlModule,
      imports: [GraphQLModule.forRoot(gqlOptions)],
      providers: [...backendGqlModuleProviders],
    };
  }
}