import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from './modules/auth/auth.module';
import { UsersModule } from './modules/users/users.module';
import { AppsModule } from './modules/apps/apps.module';
import { BuildsModule } from './modules/builds/builds.module';
import { InstallModule } from './modules/install/install.module';
import { AdminModule } from './modules/admin/admin.module';
import { ApiKeysModule } from './modules/api-keys/api-keys.module';
import { User } from './entities/user.entity';
import { App } from './entities/app.entity';
import { Build } from './entities/build.entity';
import { PlatformSettings } from './entities/platform-settings.entity';
import { ApiKey } from './entities/api-key.entity';

@Module({
  imports: [
    ConfigModule.forRoot({ isGlobal: true }),
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: process.env.DB_HOST || 'localhost',
      port: parseInt(process.env.DB_PORT || '5432', 10),
      username: process.env.DB_USERNAME || 'postgres',
      password: process.env.DB_PASSWORD || 'postgres',
      database: process.env.DB_DATABASE || 'deployhub',
      entities: [User, App, Build, PlatformSettings, ApiKey],
      synchronize: false,
    }),
    AuthModule,
    UsersModule,
    AppsModule,
    BuildsModule,
    InstallModule,
    AdminModule,
    ApiKeysModule,
  ],
})
export class AppModule {}
