import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { StorageModule } from '@devstroupe/devkit-nest'; import { UserModule } from './modules/user/user.module'; import { AuthModule } from './modules/auth/auth.module'; import { RoleModule } from './modules/role/role.module'; import { StorageDownloadModule } from './modules/storage/storage.module'; import * as path from 'path'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: process.env.DB_HOST || 'localhost', port: Number(process.env.DB_PORT) || 3306, username: process.env.DB_USER || 'root', password: process.env.DB_PASSWORD || 'root', database: process.env.DB_NAME || 'devstroupe', autoLoadEntities: true, synchronize: false, migrations: [path.join(__dirname, './database/migrations/*{.ts,.js}')], migrationsRun: true, }), (StorageModule as any).registerAsync({ useFactory: () => ({ driver: (process.env.STORAGE_DRIVER || 'local') as 'local' | 's3' | 'r2', local: { storagePath: process.env.STORAGE_LOCAL_PATH || './storage', }, s3: { bucket: process.env.S3_BUCKET || 'my-bucket', region: process.env.SRegion || 'us-east-1', accessKeyId: process.env.S3_ACCESS_KEY || '', secretAccessKey: process.env.S3_SECRET_KEY || '', }, r2: { bucket: process.env.R2_BUCKET || 'my-bucket', accountId: process.env.R2_ACCOUNT_ID || '', accessKeyId: process.env.R2_ACCESS_KEY || '', secretAccessKey: process.env.R2_SECRET_KEY || '', } }) }), UserModule, AuthModule, RoleModule, StorageDownloadModule, ], controllers: [], providers: [], }) export class AppModule {}