import {ConnectionOptions} from 'typeorm';
import { LoggerOptions } from 'typeorm/logger/LoggerOptions';

import { Entities } from '~entities';


// Check typeORM documentation for more information.
const config: ConnectionOptions = {
	type: process.env.TYPEORM_CONNECTION as "postgres",
	host: process.env.TYPEORM_HOST,
	port: Number(process.env.TYPEORM_PORT),
	username: process.env.TYPEORM_USERNAME,
	password: process.env.TYPEORM_PASSWORD,
	database: process.env.TYPEORM_DATABASE,
	entities: [...Entities],
	// ...(process.env.TYPEORM_SSL === "true" && {ssl: {
	// 	rejectUnauthorized: false,
	// }}),

	// We are using migrations, synchronize should be set to false.
	synchronize: false,
	migrationsRun: true,

	// Run migrations automatically,
	// you can disable this if you prefer running migration manually.
	// migrationsRun: true,
	logging: process.env.TYPEORM_LOGGING as LoggerOptions,

	// allow both start:prod and start:dev to use migrations
	// __dirname is either dist or src folder, meaning either
	// the compiled js in prod or the ts in dev
	migrations: [__dirname + '/database/migrations/**/*{.ts,.js}'],
	cli: {
		migrationsDir: 'src/database/migrations',
	},
};

export = config;