···1-import { createExpressApp } from './shared/infrastructure/http/app';
2-import { DatabaseFactory } from './shared/infrastructure/database/DatabaseFactory';
3import { configService } from './shared/infrastructure/config';
4-import { startFeedWorker } from './workers/feed-worker';
5-6-async function startServer() {
7- // Get configuration
8- const config = configService.get();
9-10- const useMockRepos = process.env.USE_MOCK_REPOS === 'true';
11- if (!useMockRepos) {
12- // Create database connection with config
13- const db = DatabaseFactory.createConnection(
14- configService.getDatabaseConfig(),
15- );
16-17- // Run migrations
18- try {
19- await DatabaseFactory.runMigrations(db);
20- console.log('Database migrations completed successfully');
21- } catch (error) {
22- console.error('Error running database migrations:', error);
23- process.exit(1);
24- }
25- }
2627- // Create and start Express app with config
28- const app = createExpressApp(configService);
29- const PORT = config.server.port;
30- const HOST = config.server.host;
3132- app.listen(PORT, HOST, () => {
33- console.log(
34- `Server running on http://${HOST}:${PORT} in ${config.environment} environment`,
35- );
36- });
3738 // Start feed worker in the same process if using in-memory events
39 const useInMemoryEvents = process.env.USE_IN_MEMORY_EVENTS === 'true';
40 if (useInMemoryEvents) {
41 console.log('Starting feed worker in the same process...');
42- await startFeedWorker();
043 }
44}
4546-startServer().catch((error) => {
47- console.error('Failed to start server:', error);
48 process.exit(1);
49});
···001import { configService } from './shared/infrastructure/config';
2+import { AppProcess } from './shared/infrastructure/processes/AppProcess';
3+import { FeedWorkerProcess } from './shared/infrastructure/processes/FeedWorkerProcess';
0000000000000000000045+async function main() {
6+ const appProcess = new AppProcess(configService);
0078+ // Start the app process
9+ await appProcess.start();
0001011 // Start feed worker in the same process if using in-memory events
12 const useInMemoryEvents = process.env.USE_IN_MEMORY_EVENTS === 'true';
13 if (useInMemoryEvents) {
14 console.log('Starting feed worker in the same process...');
15+ const feedWorkerProcess = new FeedWorkerProcess(configService);
16+ await feedWorkerProcess.start();
17 }
18}
1920+main().catch((error) => {
21+ console.error('Failed to start application:', error);
22 process.exit(1);
23});