import dotenv from 'dotenv';
// Load environment variables
dotenv.config();
export interface DatabaseConfig {
host: string;
port: number;
user: string;
password: string;
database?: string;
ssl?: {
rejectUnauthorized?: boolean;
ca?: string;
cert?: string;
key?: string;
};
}
export const config: DatabaseConfig = {
host: process.env.MYSQL_HOST || 'localhost',
port: parseInt(process.env.MYSQL_PORT || '3306'),
user: process.env.MYSQL_USER || 'root',
password: process.env.MYSQL_PASSWORD || '',
database: process.env.MYSQL_DATABASE || undefined,
ssl: process.env.MYSQL_SSL_CA || process.env.MYSQL_SSL_CERT || process.env.MYSQL_SSL_KEY ? {
rejectUnauthorized: process.env.MYSQL_SSL_REJECT_UNAUTHORIZED !== 'false',
ca: process.env.MYSQL_SSL_CA,
cert: process.env.MYSQL_SSL_CERT,
key: process.env.MYSQL_SSL_KEY,
} : undefined,
};
// Validate required configuration
export function validateConfig(): boolean {
if (!config.user) {
throw new Error('MYSQL_USER environment variable is required');
}
if (!config.password) {
throw new Error('MYSQL_PASSWORD environment variable is required');
}
return true;
}