/** * QuestDB configuration using Yup * Time-series database for OHLCV data, indicators, and performance metrics */ import { cleanEnv, envValidators } from './env-utils'; const { str, port, bool, num } = envValidators; /** * QuestDB configuration with validation and defaults */ export const questdbConfig = cleanEnv(process.env, { // QuestDB Connection QUESTDB_HOST: str('localhost', 'QuestDB host'), QUESTDB_HTTP_PORT: port(9000, 'QuestDB HTTP port (web console)'), QUESTDB_PG_PORT: port(8812, 'QuestDB PostgreSQL wire protocol port'), QUESTDB_INFLUX_PORT: port(9009, 'QuestDB InfluxDB line protocol port'), // Authentication (if enabled) QUESTDB_USER: str('', 'QuestDB username (if auth enabled)'), QUESTDB_PASSWORD: str('', 'QuestDB password (if auth enabled)'), // Connection Settings QUESTDB_CONNECTION_TIMEOUT: num(5000, 'Connection timeout in ms'), QUESTDB_REQUEST_TIMEOUT: num(30000, 'Request timeout in ms'), QUESTDB_RETRY_ATTEMPTS: num(3, 'Number of retry attempts'), // TLS Settings QUESTDB_TLS_ENABLED: bool(false, 'Enable TLS for QuestDB connection'), QUESTDB_TLS_VERIFY_SERVER_CERT: bool(true, 'Verify server certificate'), // Database Settings QUESTDB_DEFAULT_DATABASE: str('qdb', 'Default database name'), QUESTDB_TELEMETRY_ENABLED: bool(false, 'Enable telemetry'), }); // Export typed configuration object export type QuestDbConfig = typeof questdbConfig; // Export individual config values for convenience export const { QUESTDB_HOST, QUESTDB_HTTP_PORT, QUESTDB_PG_PORT, QUESTDB_INFLUX_PORT, QUESTDB_USER, QUESTDB_PASSWORD, QUESTDB_CONNECTION_TIMEOUT, QUESTDB_REQUEST_TIMEOUT, QUESTDB_RETRY_ATTEMPTS, QUESTDB_TLS_ENABLED, QUESTDB_TLS_VERIFY_SERVER_CERT, QUESTDB_DEFAULT_DATABASE, QUESTDB_TELEMETRY_ENABLED, } = questdbConfig;