import { Dialect } from 'sequelize';
import dotenv from 'dotenv';
 
dotenv.config();
 
const env = process.env.NODE_ENV || 'development';
 
export interface DBConfig {
    username: string;
    password: string | null;
    database: string;
    host: string;
    dialect: Dialect;
    logging?: boolean;
    pool?: {
        max: number;
        min: number;
        acquire: number;
        idle: number;
    };
}
 
export interface Config {
    [key: string]: DBConfig;
}
 
const config: Config = {
    development: {
        username: process.env.DB_USER || '',
        password: process.env.DB_PASSWORD || '',
        database: process.env.DB_NAME || '',
        host: process.env.DB_HOST || '',
        dialect: (process.env.DB_DIALECT as Dialect) || 'postgres',
        logging: false,
        pool: {
            max: 50, // handle heavy traffic and multiple parallel queries
            min: 10, // always keep 10 ready-to-go connections
            acquire: 60000, // wait up to 60s before timeout
            idle: 10000, // close idle ones after 10s if above min
        },
    },
    test: {
        username: '',
        password: '',
        database: '',
        host: '',
        dialect: 'postgres',
        logging: false,
        pool: {
            max: 50, // handle heavy traffic and multiple parallel queries
            min: 10, // always keep 10 ready-to-go connections
            acquire: 60000, // wait up to 60s before timeout
            idle: 10000, // close idle ones after 10s if above min
        },
    },
    production: {
        username: '',
        password: '',
        database: '',
        host: '',
        dialect: 'postgres',
        logging: false,
        pool: {
            max: 50, // heavy traffic and multiple parallel queries
            min: 10, // always keep 10 ready-to-go connections
            acquire: 60000, // wait up to 60s before timeout
            idle: 10000, // close idle ones after 10s if above min
        },
    },
};
 
export default config;
 
 