import { join } from 'path'; import { readFileSync } from 'fs'; import { DataSource } from 'typeorm'; import * as toml from 'toml'; import * as dotenv from 'dotenv'; dotenv.config(); const CONFIG_ENV = process.env.NODE_ENV === 'production' ? 'prod' : 'dev'; const CONFIG_FILENAME = process.env.CONFIG || `config.${CONFIG_ENV}.toml`; const CONFIG_PATH = join(process.cwd(), CONFIG_FILENAME); // toml.parse returns an object that doesn't have the correct prototype, // thus this JSON workaround is used. const config = JSON.parse( JSON.stringify(toml.parse(readFileSync(CONFIG_PATH, { encoding: 'utf-8' }))), ); if (config.database.entities?.length) { config.database.entities = config.database.entities.map((path: string) => join(process.cwd(), path), ); } if (config.database.migrations?.length) { config.database.migrations = config.database.migrations.map((path: string) => join(process.cwd(), path), ); } export const AppDataSource = new DataSource(config.database);