/** * Data Pipeline Service * Simplified entry point using ServiceApplication framework */ import { initializeServiceConfig } from '@stock-bot/config'; import { ServiceApplication, createServiceContainerFromConfig, initializeServices as initializeAwilixServices, } from '@stock-bot/di'; import { getLogger } from '@stock-bot/logger'; // Local imports import { initializeAllHandlers } from './handlers'; import { createRoutes } from './routes/create-routes'; import { setupServiceContainer } from './container-setup'; // Initialize configuration const config = initializeServiceConfig(); console.log('Data Pipeline Service Configuration:', JSON.stringify(config, null, 2)); // Create service application const app = new ServiceApplication( config, { serviceName: 'data-pipeline', enableHandlers: true, enableScheduledJobs: true, corsConfig: { origin: '*', allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'], allowHeaders: ['Content-Type', 'Authorization'], credentials: false, }, serviceMetadata: { version: '1.0.0', description: 'Data processing and transformation pipeline', endpoints: { health: '/health', operations: '/api/operations', }, }, }, { // Custom lifecycle hooks onContainerReady: (container) => { // Setup service-specific configuration const enhancedContainer = setupServiceContainer(config, container); return enhancedContainer; }, onStarted: (port) => { const logger = getLogger('data-pipeline'); logger.info('Data pipeline service startup initiated with ServiceApplication framework'); }, } ); // Container factory function async function createContainer(config: any) { const container = createServiceContainerFromConfig(config, { enableQuestDB: config.database.questdb?.enabled || false, // Data pipeline needs all databases enableMongoDB: true, enablePostgres: true, enableCache: true, enableQueue: true, enableBrowser: false, // Data pipeline doesn't need browser enableProxy: false, // Data pipeline doesn't need proxy }); await initializeAwilixServices(container); return container; } // Start the service app.start(createContainer, createRoutes, initializeAllHandlers).catch(error => { const logger = getLogger('data-pipeline'); logger.fatal('Failed to start data pipeline service', { error }); process.exit(1); });