import { Module } from '@nestjs/common'; import { ClientsModule } from '@nestjs/microservices'; import { ConfigModule } from '@nestjs/config'; import { InputsController } from './modules/inputs/inputs.controller'; import { TransformationsController } from './modules/transformations/transformations.controller'; import { OutputsController } from './modules/outputs/outputs.controllers'; import { PipelinesController } from './modules/pipelines/pipelines.controller'; import { AuthController } from './modules/auth/auth.controller'; import { HealthController } from './modules/health/health.controller'; import { InputsService } from './modules/inputs/inputs.service'; import { TransformationsService } from './modules/transformations/transformations.service'; import { OutputsService } from './modules/outputs/outputs.service'; import { PipelinesService } from './modules/pipelines/pipelines.service'; import { HealthService } from './modules/health/health.service'; import { InputsClientService } from './clients/inputs/client.service'; import { TransformationsClientService } from './clients/transformations/client.service'; import { OutputsClientService } from './clients/outputs/client.service'; import { PipelinesClientService } from './clients/pipelines/client.service'; import { OutputsClientConfiguration } from './clients/outputs/client.config'; import { TransformationsClientConfiguration } from './clients/transformations/client.config'; import { InputsClientConfiguration } from './clients/inputs/client.config'; import { PipelinesClientConfiguration } from './clients/pipelines/client.config'; import { CatalogController } from './modules/catalog/catalog.controller'; import { CatalogService } from './modules/catalog/catalog.service'; import { OauthController } from './modules/oauth/oauth.controller'; import { getOauthSecrets } from './utils/OauthSecrets'; import { HubspotStrategy } from './modules/oauth/passport-strategies/hubspot-strategy'; import { FacebookStrategy } from './modules/oauth/passport-strategies/facebook-strategy'; import { AuthenticationGuard } from './authentication/authentication.guard'; import { APP_GUARD } from '@nestjs/core'; import { GoogleStrategy } from './modules/oauth/passport-strategies/google-strategy'; import { MailChimpStrategy } from './modules/oauth/passport-strategies/mailchimp-strategy'; import { SalesforceStrategy } from './modules/oauth/passport-strategies/salesforce-strategy'; import { ConnectorModule } from './modules/connector/connector.module'; import { AuthModule } from './modules/auth/auth.module'; import { PermissionsModule } from './modules/permissions/permissions.module'; import { DadosferaLogger } from 'dadosfera-logs'; import { TermsOfUseModule } from './modules/termsOfUse/termsOfUse.module'; import { ConnectionModule } from './modules/connection/connection.module'; import { ConnectionTestModule } from './modules/connection-test/connection-test.module'; import { NetworkConfigModule } from './modules/network-config/network-config.module'; const inputClient = new InputsClientConfiguration(); const outputClient = new OutputsClientConfiguration(); const pipelineClient = new PipelinesClientConfiguration(); const transformationClient = new TransformationsClientConfiguration(); @Module({ controllers: [ InputsController, TransformationsController, OutputsController, PipelinesController, AuthController, HealthController, CatalogController, OauthController, ], providers: [ DadosferaLogger, { provide: 'OAUTH_SECRETS', useValue: getOauthSecrets() }, InputsService, TransformationsService, OutputsService, PipelinesService, HealthService, InputsClientService, TransformationsClientService, OutputsClientService, PipelinesClientService, CatalogService, HubspotStrategy, FacebookStrategy, GoogleStrategy, MailChimpStrategy, SalesforceStrategy, { provide: APP_GUARD, useClass: AuthenticationGuard, }, ], imports: [ ConfigModule.forRoot({ isGlobal: true, }), ConnectorModule, AuthModule, PermissionsModule, TermsOfUseModule, ConnectionModule, NetworkConfigModule, ConnectionTestModule, ClientsModule.register([ { name: 'INPUTS_PACKAGE', ...inputClient.config(), }, { name: 'TRANSFORMATIONS_PACKAGE', ...transformationClient.config(), }, { name: 'OUTPUTS_PACKAGE', ...outputClient.config(), }, { name: 'PIPELINES_PACKAGE', ...pipelineClient.config(), }, ]), ], }) export class AppModule {}