/** * Database configuration using Yup */ import { cleanEnv, envValidators } from './env-utils'; const { str, port, num, bool } = envValidators; /** * Database configuration with validation and defaults */ export const databaseConfig = cleanEnv(process.env, { // PostgreSQL Configuration DB_HOST: str('localhost', 'Database host'), DB_PORT: port(5432, 'Database port'), DB_NAME: str('stockbot', 'Database name'), DB_USER: str('stockbot', 'Database user'), DB_PASSWORD: str('', 'Database password'), // Connection Pool Settings DB_POOL_MIN: num(2, 'Minimum pool connections'), DB_POOL_MAX: num(10, 'Maximum pool connections'), DB_POOL_IDLE_TIMEOUT: num(30000, 'Pool idle timeout in ms'), // SSL Configuration DB_SSL: bool(false, 'Enable SSL for database connection'), DB_SSL_REJECT_UNAUTHORIZED: bool(true, 'Reject unauthorized SSL certificates'), // Additional Settings DB_QUERY_TIMEOUT: num(30000, 'Query timeout in ms'), DB_CONNECTION_TIMEOUT: num(5000, 'Connection timeout in ms'), DB_STATEMENT_TIMEOUT: num(30000, 'Statement timeout in ms'), DB_LOCK_TIMEOUT: num(10000, 'Lock timeout in ms'), DB_IDLE_IN_TRANSACTION_SESSION_TIMEOUT: num(60000, 'Idle in transaction timeout in ms'), }); // Export typed configuration object export type DatabaseConfig = typeof databaseConfig; // Export individual config values for convenience export const { DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD, DB_POOL_MIN, DB_POOL_MAX, DB_POOL_IDLE_TIMEOUT, DB_SSL, DB_SSL_REJECT_UNAUTHORIZED, DB_QUERY_TIMEOUT, DB_CONNECTION_TIMEOUT, DB_STATEMENT_TIMEOUT, DB_LOCK_TIMEOUT, DB_IDLE_IN_TRANSACTION_SESSION_TIMEOUT, } = databaseConfig;