55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
/**
|
|
* 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;
|