gcx/backend/services/admin-service/src/admin.module.ts

63 lines
2.3 KiB
TypeScript

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { JwtModule } from '@nestjs/jwt';
import { PassportModule } from '@nestjs/passport';
// Domain
import { AppVersion } from './domain/entities/app-version.entity';
// Application
import { AppVersionService } from './application/services/app-version.service';
import { FileStorageService } from './application/services/file-storage.service';
// Domain
import { APP_VERSION_REPOSITORY } from './domain/repositories/app-version.repository.interface';
import { PACKAGE_PARSER } from './domain/ports/package-parser.interface';
// Infrastructure
import { AppVersionRepository } from './infrastructure/persistence/app-version.repository';
import { PackageParserService } from './infrastructure/parsers/package-parser.service';
// Interface - Controllers
import { AppVersionController } from './interface/http/controllers/app-version.controller';
import { AdminVersionController } from './interface/http/controllers/admin-version.controller';
import { HealthController } from './interface/http/controllers/health.controller';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432', 10),
username: process.env.DB_USERNAME || 'genex',
password: process.env.DB_PASSWORD || 'genex_dev_password',
database: process.env.DB_NAME || 'genex',
autoLoadEntities: true,
synchronize: false,
logging: process.env.NODE_ENV === 'development',
extra: {
max: parseInt(process.env.DB_POOL_MAX || '20', 10),
min: parseInt(process.env.DB_POOL_MIN || '5', 10),
},
}),
TypeOrmModule.forFeature([AppVersion]),
PassportModule.register({ defaultStrategy: 'jwt' }),
JwtModule.register({
secret: process.env.JWT_SECRET || 'genex-jwt-secret-dev',
signOptions: { expiresIn: process.env.JWT_EXPIRES_IN || '24h' },
}),
],
controllers: [
HealthController,
AppVersionController,
AdminVersionController,
],
providers: [
{ provide: APP_VERSION_REPOSITORY, useClass: AppVersionRepository },
AppVersionService,
FileStorageService,
{ provide: PACKAGE_PARSER, useClass: PackageParserService },
],
})
export class AdminModule {}