getting closer

This commit is contained in:
Bojan Kucera 2025-06-03 12:33:08 -04:00
parent 23f7614b29
commit f8576c0d93
4 changed files with 62 additions and 5 deletions

View file

@ -1,7 +1,7 @@
/** /**
* Data provider configurations for market data * Data provider configurations for market data
*/ */
import { getEnvVar, validateConfig } from './core'; import { getEnvVar, validateConfig, createConfigLoader } from './core';
import { dataProvidersConfigSchema, DataProvidersConfig, DataProviderConfig } from './types'; import { dataProvidersConfigSchema, DataProvidersConfig, DataProviderConfig } from './types';
/** /**
@ -67,6 +67,18 @@ export function loadDataProviderConfigs(): DataProvidersConfig {
return validateConfig(config, dataProvidersConfigSchema); return validateConfig(config, dataProvidersConfigSchema);
} }
/**
* Creates a dynamic configuration loader for data providers
*/
export const createDataProvidersConfig = createConfigLoader<DataProvidersConfig>(
'data-providers',
dataProvidersConfigSchema,
{
providers: defaultDataProviders,
defaultProvider: 'alpaca'
}
);
/** /**
* Singleton data provider configurations * Singleton data provider configurations
*/ */

View file

@ -2,7 +2,7 @@
* Database configuration for Stock Bot services * Database configuration for Stock Bot services
*/ */
import { z } from 'zod'; import { z } from 'zod';
import { getEnvVar, getNumericEnvVar, validateConfig } from './core'; import { getEnvVar, getNumericEnvVar, validateConfig, createConfigLoader } from './core';
import { databaseConfigSchema, DatabaseConfig } from './types'; import { databaseConfigSchema, DatabaseConfig } from './types';
/** /**
@ -76,6 +76,15 @@ export function loadDatabaseConfig(): DatabaseConfig {
return validateConfig(config, databaseConfigSchema); return validateConfig(config, databaseConfigSchema);
} }
/**
* Creates a dynamic configuration loader for database config
*/
export const createDatabaseConfig = createConfigLoader<typeof defaultDatabaseConfig>(
'database',
databaseConfigSchema,
defaultDatabaseConfig
);
/** /**
* Singleton database configuration * Singleton database configuration
*/ */

View file

@ -2,7 +2,7 @@
* Loki logging configuration for Stock Bot platform * Loki logging configuration for Stock Bot platform
*/ */
import { z } from 'zod'; import { z } from 'zod';
import { getEnvVar, getNumericEnvVar, getBooleanEnvVar } from './core'; import { getEnvVar, getNumericEnvVar, getBooleanEnvVar, createConfigLoader, validateConfig } from './core';
/** /**
* Loki configuration schema * Loki configuration schema
@ -49,11 +49,27 @@ function parseLabels(labelsStr?: string): Record<string, string> {
return labels; return labels;
} }
/**
* Default logging configuration
*/
const defaultLoggingConfig: LoggingConfig = {
level: 'info',
console: true,
loki: {
host: 'localhost',
port: 3100,
retentionDays: 30,
labels: {},
batchSize: 100,
flushIntervalMs: 5000
}
};
/** /**
* Load logging configuration from environment variables * Load logging configuration from environment variables
*/ */
export function loadLoggingConfig(): LoggingConfig { export function loadLoggingConfig(): LoggingConfig {
return { const config = {
level: (getEnvVar('LOG_LEVEL') || 'info') as 'debug' | 'info' | 'warn' | 'error', level: (getEnvVar('LOG_LEVEL') || 'info') as 'debug' | 'info' | 'warn' | 'error',
console: getBooleanEnvVar('LOG_CONSOLE', true), console: getBooleanEnvVar('LOG_CONSOLE', true),
loki: { loki: {
@ -67,8 +83,19 @@ export function loadLoggingConfig(): LoggingConfig {
flushIntervalMs: getNumericEnvVar('LOKI_FLUSH_INTERVAL_MS', 5000) flushIntervalMs: getNumericEnvVar('LOKI_FLUSH_INTERVAL_MS', 5000)
} }
}; };
return validateConfig(config, loggingConfigSchema);
} }
/**
* Creates a dynamic configuration loader for logging
*/
export const createLoggingConfig = createConfigLoader<typeof defaultLoggingConfig>(
'logging',
loggingConfigSchema,
defaultLoggingConfig
);
/** /**
* Singleton logging configuration * Singleton logging configuration
*/ */

View file

@ -1,7 +1,7 @@
/** /**
* Risk management configuration for trading operations * Risk management configuration for trading operations
*/ */
import { getNumericEnvVar, validateConfig } from './core'; import { getNumericEnvVar, validateConfig, createConfigLoader } from './core';
import { riskConfigSchema, RiskConfig } from './types'; import { riskConfigSchema, RiskConfig } from './types';
/** /**
@ -30,6 +30,15 @@ export function loadRiskConfig(): RiskConfig {
return validateConfig(config, riskConfigSchema); return validateConfig(config, riskConfigSchema);
} }
/**
* Creates a dynamic configuration loader for risk management
*/
export const createRiskConfig = createConfigLoader<typeof defaultRiskConfig>(
'risk',
riskConfigSchema,
defaultRiskConfig
);
/** /**
* Singleton risk configuration * Singleton risk configuration
*/ */