Skip to content

Instantly share code, notes, and snippets.

@NooNoo1337
Created November 9, 2021 16:08
Show Gist options
  • Save NooNoo1337/9421c41780438d280b4a5eaa2e79d7e8 to your computer and use it in GitHub Desktop.
Save NooNoo1337/9421c41780438d280b4a5eaa2e79d7e8 to your computer and use it in GitHub Desktop.
import { ConfigService } from '@nestjs/config';
import { TypeOrmModuleOptions } from '@nestjs/typeorm';
import * as fs from 'fs';
export const getPostgresConfig = (configService: ConfigService): TypeOrmModuleOptions => {
const isTestEnv = process.env.NODE_ENV === 'test';
const options: TypeOrmModuleOptions = {
type: 'postgres',
host: configService.get('POSTGRES_HOST'),
port: configService.get('POSTGRES_PORT'),
username: configService.get('POSTGRES_USER'),
password: configService.get('POSTGRES_PASSWORD'),
database: configService.get('POSTGRES_DB'),
synchronize: false,
dropSchema: false,
migrationsRun: true,
migrations: ['dist/migrations/*.js'],
entities: ['dist/entities/*.js'],
migrationsTableName: 'migrations',
cli: {
migrationsDir: 'src/migrations',
entitiesDir: 'src/entities',
},
};
const ormConfigFileName = 'ormconfig.json';
if (isTestEnv) {
const testOptions: TypeOrmModuleOptions = {
type: 'postgres',
host: configService.get('POSTGRES_HOST'),
port: configService.get('POSTGRES_TEST_PORT'),
username: configService.get('POSTGRES_USER'),
password: configService.get('POSTGRES_PASSWORD'),
database: configService.get('POSTGRES_TEST_DB'),
autoLoadEntities: true,
synchronize: false,
dropSchema: true,
migrationsRun: true,
migrations: ['src/migrations/*.ts'],
entities: ['src/entities/*.ts'],
migrationsTableName: 'migrations',
cli: {
migrationsDir: 'src/migrations',
},
};
fs.writeFileSync(ormConfigFileName, JSON.stringify(testOptions, null, 2));
return testOptions;
}
fs.writeFileSync(ormConfigFileName, JSON.stringify(options, null, 2));
return options;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment