Skip to content
Snippets Groups Projects
Select Git revision
  • 9206e75137a1cf12d6b1f03a6330b32cf5ae6111
  • main default protected
  • sprint-1/75-issue
  • feat/histograms
  • feat/exareme2-viz-integrations
  • docs
  • fix/datashield-token-issue
  • feat/logistic-reg-cv
  • feat/datashield-integration
  • feat/datashield-algorithms
  • feat/remove-matomo-config
  • feat/auth-refresh-token
  • feat/integration-logistic-regression
  • feat/exareme2-integration
  • feat/exareme2-t-test-paired-integration
  • feat/linear-regression-cv
  • fix/cache-reset-logout
  • feat/datashield-connector
  • feat/connector-cache
  • feat/datashield-cohorts-filter
  • feat/logger-levels
  • 1.4.1
  • 1.4.0
  • 1.4.0-rc.7
  • 1.4.0-rc.6
  • 1.4.0-beta.10
  • 1.4.0-beta.9
  • 1.4.0-beta.8
  • 1.4.0-rc.5
  • 1.4.0-rc.4
  • 1.4.0-beta.7
  • 1.4.0-beta.6
  • 1.4.0-rc.3
  • 1.4.0-rc.2
  • 1.4.0-rc.1
  • 1.4.0-beta.5
  • 1.4.0-beta.4
  • 1.4.0-beta.3
  • 1.4.0-beta.2
  • 1.4.0-beta.1
  • 1.3.1
41 results

app.module.ts

Blame
  • user avatar
    Steve Reis authored
    9206e751
    History
    app.module.ts 2.40 KiB
    import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
    import { Module } from '@nestjs/common';
    import { ConfigModule, ConfigService } from '@nestjs/config';
    import { GraphQLModule } from '@nestjs/graphql';
    import { TypeOrmModule } from '@nestjs/typeorm';
    import { GraphQLError } from 'graphql';
    import { join } from 'path';
    import { AuthModule } from 'src/auth/auth.module';
    import authConfig from 'src/config/auth.config';
    import cacheConfig from 'src/config/cache.config';
    import dbConfig from 'src/config/db.config';
    import { EngineModule } from 'src/engine/engine.module';
    import { ExperimentsModule } from 'src/experiments/experiments.module';
    import { FilesModule } from 'src/files/files.module';
    import { UsersModule } from 'src/users/users.module';
    import { AppController } from './app.controller';
    import { AppService } from './app.service';
    
    @Module({
      imports: [
        ConfigModule.forRoot({
          isGlobal: true,
          envFilePath: ['.env', '.env.defaults'],
          load: [dbConfig, cacheConfig, authConfig],
        }),
        GraphQLModule.forRoot<ApolloDriverConfig>({
          driver: ApolloDriver,
          autoSchemaFile: join(process.cwd(), 'src/schema.gql'),
          context: ({ req, res }) => ({ req, res }),
          cors: {
            credentials: true,
            origin: [/http:\/\/localhost($|:\d*)/, /http:\/\/127.0.0.1($|:\d*)/],
          },
          formatError: (error: GraphQLError) => {
            const extensions = {
              code: error.extensions.code,
              status:
                error.extensions?.response?.statusCode ??
                error.extensions.exception.status,
              message:
                error.extensions?.response?.message ??
                error.extensions?.exception?.message,
            };
    
            return { ...error, extensions: { ...error.extensions, ...extensions } };
          },
        }),
        EngineModule.forRoot({
          type: process.env.ENGINE_TYPE,
          baseurl: process.env.ENGINE_BASE_URL,
        }),
        TypeOrmModule.forRootAsync({
          inject: [ConfigService],
          useFactory: (config: ConfigService) => ({
            ...config.get('database'),
            migrations: ['dist/migrations/*{.ts,.js}'],
            migrationsRun: process.env.NODE_ENV !== 'dev',
            synchronize: process.env.NODE_ENV === 'dev',
            autoLoadEntities: true,
          }),
        }),
        UsersModule,
        AuthModule,
        ExperimentsModule,
        FilesModule,
      ],
      controllers: [AppController],
      providers: [AppService],
    })
    export class AppModule {}