import { Config, InjectionToken, Injector, Module, ModuleWithProviders } from "@notadd/core"; import { ConnectionOptions } from './typeorm-native'; import { TypeormModule } from './typeorm.module'; import { createRootProviders } from "./util"; export const TYPEORM_CONFIG = new InjectionToken(`TYPEORM_CONFIG`); /** * DB_POSTGRES_PORT=5433 * DB_POSTGRES_DATABASE=default * DB_POSTGRES_USERNAME=default * DB_POSTGRES_PASSWORD=secret * DB_POSTGRES_HOST=postgres */ @Module() export class TypeormPostgresEnvModule { static forRoot(): ModuleWithProviders { return { ngModule: TypeormModule, providers: [ { provide: TYPEORM_CONFIG, useFactory: (injector: Injector) => { const config = injector.get(Config) return { type: 'postgres', name: config.get('TYPEORM_NAME', 'root'), username: config.get('DB_POSTGRES_USERNAME', 'baojian'), password: config.get('DB_POSTGRES_PASSWORD', 'baojian'), host: config.get('DB_POSTGRES_HOST', '10.0.1.25'), port: config.get('DB_POSTGRES_PORT', 5432), database: config.get('DB_POSTGRES_DATABASE', 'dabaojian'), entities: [], logging: ['error','info','log','migration','query','schema','warn'], logger: 'file', synchronize: config.get('DB_POSTGRES_SYNCHRONIZE', 'false') === 'true', } as ConnectionOptions }, deps: [Injector] }, ...createRootProviders(TYPEORM_CONFIG) ] } } }