63 lines
2.3 KiB
TypeScript
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 {}
|