stock-bot/libs/config/src/example.ts

81 lines
3.2 KiB
TypeScript

/**
* Example usage of the @stock-bot/config library
*/
import {
databaseConfig,
dataProviderConfigs,
riskConfig,
Environment,
getEnvironment,
marketDataGatewayConfig,
riskGuardianConfig,
ConfigurationError,
validateConfig
} from './index';
/**
* Display current configuration values
*/
export function printCurrentConfig(): void {
console.log('\n=== Stock Bot Configuration ===');
console.log('\nEnvironment:', getEnvironment());
console.log('\n--- Database Config ---');
console.log('Dragonfly Host:', databaseConfig.dragonfly.host);
console.log('Dragonfly Port:', databaseConfig.dragonfly.port);
console.log('QuestDB Host:', databaseConfig.questDB.host);
console.log('QuestDB Database:', databaseConfig.questDB.database);
console.log('MongoDB URI:', databaseConfig.mongodb.uri);
console.log('MongoDB Database:', databaseConfig.mongodb.database);
console.log('PostgreSQL Host:', databaseConfig.postgres.host);
console.log('PostgreSQL Database:', databaseConfig.postgres.database);
console.log('\n--- Data Provider Config ---');
console.log('Default Provider:', dataProviderConfigs.defaultProvider);
console.log('Providers:');
dataProviderConfigs.providers.forEach((provider: {
name: string;
type: string;
baseUrl?: string;
wsUrl?: string;
}) => {
console.log(` - ${provider.name} (${provider.type})`);
if (provider.baseUrl) console.log(` URL: ${provider.baseUrl}`);
if (provider.wsUrl) console.log(` WebSocket: ${provider.wsUrl}`);
});
console.log('\n--- Risk Config ---');
console.log('Max Drawdown:', riskConfig.maxDrawdown * 100, '%');
console.log('Max Position Size:', riskConfig.maxPositionSize * 100, '%');
console.log('Max Leverage:', riskConfig.maxLeverage, 'x');
console.log('Default Stop Loss:', riskConfig.stopLossDefault * 100, '%');
console.log('Default Take Profit:', riskConfig.takeProfitDefault * 100, '%');
console.log('\n--- Market Data Gateway Config ---');
console.log('Service Port:', marketDataGatewayConfig.service.port);
console.log('WebSocket Enabled:', marketDataGatewayConfig.websocket.enabled);
console.log('WebSocket Path:', marketDataGatewayConfig.websocket.path);
console.log('Caching Enabled:', marketDataGatewayConfig.caching.enabled);
console.log('Caching TTL:', marketDataGatewayConfig.caching.ttlSeconds, 'seconds');
console.log('\n--- Risk Guardian Config ---');
console.log('Service Port:', riskGuardianConfig.service.port);
console.log('Pre-Trade Validation:', riskGuardianConfig.riskChecks.preTradeValidation);
console.log('Portfolio Validation:', riskGuardianConfig.riskChecks.portfolioValidation);
console.log('Alerting Enabled:', riskGuardianConfig.alerting.enabled);
console.log('Critical Threshold:', riskGuardianConfig.alerting.criticalThreshold * 100, '%');
}
// Execute example if this file is run directly
if (require.main === module) { try {
printCurrentConfig();
} catch (error: unknown) {
if (error instanceof ConfigurationError) {
console.error('Configuration Error:', error.message);
} else if (error instanceof Error) {
console.error('Error:', error.message);
} else {
console.error('Unknown error:', error);
}
process.exit(1);
}
}