@tailt9/nestjs-mysql
Version:
Library use nestjs mysql, typeorm, mysql2
38 lines (36 loc) • 1.33 kB
text/typescript
import { DynamicModule, Module } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { DBModuleOptions } from './database.interface';
import { DatabaseService } from './database.service';
@Module({
providers: [ConfigService, DatabaseService],
exports: [DatabaseService, TypeOrmModule],
})
export class DatabaseModule {
static register({ name }: DBModuleOptions): DynamicModule {
return {
module: DatabaseModule,
imports: [
TypeOrmModule.forRootAsync({
name,
inject: [ConfigService],
useFactory: async (configService: ConfigService) => ({
type: 'mysql',
host: configService.get('DB_HOST', 'localhost'),
port: configService.get<number>('DB_PORT', 3306),
username: configService.get<string>('DB_USER', 'root'),
password: configService.get<string>('DB_PASSWORD', 'password'),
database: configService.get<string>('DB_NAME', 'default_db'),
autoLoadEntities: configService.get<boolean>(
'DB_AUT_ENTITIES',
true,
),
synchronize: configService.get<boolean>('DB_SYNCHRONIZE', false),
}),
}),
],
exports: [TypeOrmModule],
};
}
}